Jas*_*ker 29 java null clojure
请原谅我,如果我是钝的,但我对Clojure中有关nil的文档感到有点困惑.它说:
nil与Java null具有相同的值.
这是否意味着它们是相同的东西,或者它们是否有所不同?并且NullPointerException是否意味着遇到了Java null,或者如果遇到nil,我也会得到它吗?
Bri*_*per 44
来自Clojure源代码,lang/LispReader.java:
static private Object interpretToken(String s) throws Exception{
if(s.equals("nil"))
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
来自lang/RT.java:
static public void print(Object x, Writer w) throws Exception{
{
...
if(x == null)
w.write("nil");
Run Code Online (Sandbox Code Playgroud)
nilClojure对底层平台的表示也是如此null. nil在Clojure的Java源代码中没有显示出其他任何地方.之间唯一的区别nil和null是一个Clojure的是,另一个是Java,但他们基本上是别名,从Clojure的打算去渣Clojure的需要时,由读写器和打印机来回转换的无缝连接.
是的,nil可以导致NullPointerExceptions.尝试调用任何Java方法nil,你会得到一个NPE,例如
(.tostring nil)
Run Code Online (Sandbox Code Playgroud)
对于像这样的事情,Clojure源代码很容易阅读,请看一看.
| 归档时间: |
|
| 查看次数: |
11378 次 |
| 最近记录: |