Java null vs Swift nil

我来自我们使用NULL的Java / Android背景。 现在我正在做Swift / iOS,而且我对Swift的nil感到困惑。

我可以在Java中像NULL一样使用它吗? 它是以完全相同的方式行事,还是在使用方面有所不同?

你可以认为'null'和'nil'是一样的。 语言是否包含可选项是一个单独的问题。

目标C,没有,但没有内置的选项,而斯威夫特呢。 同样的,Java有'null',但没有隐含的可选项,而像Kotlin,Scala和Ceylon这样的几种JVM语言,在Swift之前是这样做的。

这里有一篇文章比较Kotlin,Scala和Swift中的null,nil和optionals: http : //codemonkeyism.com/comparing-optionals-and-null-in-swift-scala-ceylon-and-kotlin/

顺便提一下,对于Android开发,您可以调查Kotlin和Jetbrains的相关Anko库。 如果你真的喜欢它,你甚至可以继续在iOS上使用RoboVM 。

Swift目前不支持null合并运算符。

迅速无解释

nil表示“没有价值”。 非可选变量即使是类也不能被指定nil ,所以它不显示为null指针,也不是类似的。

我可以推荐你在Swift中阅读更多关于optionals的内容。

信息披露:我不太了解Java,所以我的答案是来自C ++ / Objective-C / Swift的角度。

NSHipster的 Matt Thompson有一篇很好的文章,以及它与Objective-C和C的关系。你可以在这里找到它。

答案基本归结为:你应该考虑它是一样的。

  • 0是你如何代表一个原始值
  • NULL是你如何代表C指针的文字
  • nil是你如何代表字面Objective-C / Swift对象