я получил метод Scala с этой подписью:Как я могу предотвратить функцию Scala получить «нуль» в качестве аргумента
def m (map: Map [String, _])
Я полагаю, Карта представляет собой тип ссылки и как таковые, я могу позвонить m
прохождение null
m (null) // Allowed call
есть ли способ, чтобы компилятор не позволяет null
это некоторые вызовы методов? Другие языки, такие как Kotlin, позволяют это, явно указывая, что параметр может быть нулевым: http://kotlinlang.org/docs/reference/null-safety.html
В Scala есть что-то подобное?
EDIT: Благодарим вас за комментарии. Я понимаю, что ссылки «null» являются временем выполнения, но другие языки с другими типами систем заботятся об этом во время компиляции.
Я только хотел узнать, был ли способ и в Скала (я начинаю использовать этот язык). Проверка комментариев, ответ и Scala type hierachy Я гость не могу.
Для объектов значений (например, неизменяемых коллекций и классов классов) может возникнуть смысл избегать «null» (однако они распространяются AnyRef
).
Я мог бы попытаться избежать «null», но, например, Map.get возвращает «null», если ключ не найден, поэтому я должен обработать это.
Что касается Map[String, _]
, это разнородная карта, подумайте об этом как о объекте JSON. Могу ли я справиться с этим другим, более похожим на Скала образом?
Спасибо!
Это невозможно со стандартным компилятором и не работает с плагином компилятора. Маркерная черта 'NotNull' устарела с 2.11. Btw, работающий с '_' как тип значения карты, не помогает безопасному типу. – cchantep
'null' существует в Scala для Java-взаимодействия. Мы вообще притворяемся, что этого не существует, потому что это принципиально нарушено. Просто никогда не пропускайте «ник» нигде. –