dal codice sorgente Clojure, lang/LispReader.java
:
static private Object interpretToken(String s) throws Exception{
if(s.equals("nil"))
{
return null;
}
Da lang/RT.java
:
static public void print(Object x, Writer w) throws Exception{
{
...
if(x == null)
w.write("nil");
Così nil
è la rappresentazione di Clojure per la sottostante piattaforma null
. nil
non compare da nessun'altra parte nel sorgente Java di Clojure. L'unica differenza tra nil
e null
è che uno è Clojure e l'altro è Java, ma sono essenzialmente alias, convertiti avanti e indietro senza soluzione di continuità dal lettore e dalla stampante quando si passa da Clojure a Java a Clojure.
Sì, nil
può causare NullPointerException
s. Prova a chiamare qualsiasi metodo Java su nil
, riceverai un NPE, ad es.
(.tostring nil)
Il codice sorgente di Clojure è piuttosto facile da leggere quando si tratta di cose come questa, date un'occhiata.
fonte
2009-03-28 03:58:43
Non necessariamente. :-) Ho anche una classe java nel traceback. –