Clojure nil vs Java null?
如果我很钝,请原谅我,但是我对Clojure中nil的文档有些困惑。它说:
nil has the same value as Java null.
这是否意味着它们是同一回事,还是某种程度上不同? NullPointerException是否意味着遇到了Java空值,或者如果遇到nil,我是否也会得到此值?
从Clojure源代码
1 2 3 4 5 |
来自
1 2 3 4 5 |
所以
是的,
1 | (.tostring nil) |
Clojure源代码很容易阅读,请看一下。
来自学习Clojure
"在大多数Lisp方言中,有一个半值与Java null等效,称为nil。在Clojure中,nil只是Java的null值,故事的结尾。"
由于Clojure编译为Java字节码,因此听起来像对nil的任何引用都只是基础JVM中的空对象引用。执行Clojure导致的NPE是访问nil的结果。