2013-07-26 91 views
4

我知道你不能在Haskell中得到空指針異常,但我很好奇其他語言有這個功能。例如,一個同事問是否有任何解釋語言不允許空值,我不知道答案。我所知道的唯一一種語言避免了這個billion dollar mistake是Haskell。什麼編程語言防止空指針異常?

+2

PHP?從技術上講,它不會給你一個空指針異常,只是一個警告。 –

+0

@BartFriederichs對我來說,聽起來並不像這樣可以避免「十億美元的錯誤」,但它仍然非常有趣 –

回答

3

在Objective-C中,您可以將消息傳遞給實際上爲nil的對象,並且它們自己默默地返回nil

但是,當您執行類C指針取消引用時(即使用*.運算符時),仍然可能存在空指針異常的風險。

0

Kotlin是一種靜態類型的編程語言,可在Java虛擬機上運行,​​也可以編譯爲JavaScript源代碼或使用LLVM編譯器基礎結構。

Kotlin通過區分可爲空和不可空的類型來避免空指針異常。所有可爲空的變量必須用「?」聲明類型名稱後的後綴。對可空變量的操作需要開發者特別注意:在使用該值之前必須執行空檢查。

要調用可爲空類型的變量的方法,您必須使用「?」運算符,如果變量不爲空(並且使其返回類型爲空),則只調用方法,或者「!!」運算符,它聲明變量當前不是空的。

請注意,如果您使用「!!」,仍然可以在Kotlin上獲得空指針異常。運算符放在null對象上或與Java進行互操作時。