2013-07-26 2 views
4

Я знаю, что вы не можете получить исключение null-указателя в Haskell, но мне интересно, что на других языках есть эта функция. Например, коллега спросил, запрещены ли какие-либо интерпретируемые языки, но я не знал ответа. Единственный язык, который я знаю об этом, избегает этого billion dollar mistake - это Haskell.Какие языки программирования предотвращают исключения нулевого указателя?

+2

PHP? Технически это не дает вам исключение nullpointer, просто предупреждение. –

+0

@BartFriederichs для меня это не похоже на то, что позволяет избежать «ошибки в миллиард долларов», но все же очень интересно знать –

ответ

3

В Objective-C вы можете передавать сообщения объектам, которые на самом деле являются nil, и они молча возвращаются nil.

Но вы все еще можете быть в опасности исключений с нулевым указателем, когда вы выполняете разыменование указателей типа C (например, при использовании операторов * или .).

0

Kotlin - это статически типизированный язык программирования, который работает на виртуальной машине Java, а также может быть скомпилирован в исходный код JavaScript или использовать инфраструктуру компилятора LLVM.

Kotlin избегает исключений из нулевого указателя, делая различие между типами NULL и NULL. Все переменные с нулевым значением должны быть объявлены с помощью?? postfix после имени типа. Операции с переменными с нулевым значением требуют особой заботы от разработчиков: перед использованием значения необходимо выполнить нуль-проверку.

Чтобы вызвать методы для переменной типа NULL, вы должны либо использовать символ «?», оператор, который вызывает метод только в том случае, если переменная не является нулевой (и делает ее возвращаемым типом nullable), или "!!" оператор, который утверждает, что переменная в настоящее время не равна нулю.

Обратите внимание, что вы по-прежнему можете получить исключение из указателя указателя на Kotlin, если вы используете «!!» оператора на нулевом объекте или при взаимодействии с Java.

Смежные вопросы