我是Clojure的新手,我试图理解为什么下面这两个函数是不同的。
First
(defn rp [i]
((println i)
(if (> i 3)
(println "bye")
(rp (inc i)))))第二
(defn rp
([i] (println i)
(if (> i 3)
(println "bye")
(rp (inc i)))))当我用(rp 0)调用它们时,第一次打印
0
1
2
3
4
bye
CompilerException java.lang.NullPointerException, compiling:(/Users/...) 和第二次打印
0
1
2
3
4
bye
=> nil他们为什么不一样?为什么第一个函数触发NullPointerException
发布于 2018-12-12 13:52:32
您的第一个示例在身体周围有父类,并将(println i) (即nil)的结果作为函数调用。例如,((println :a) :b)抛出。很可能与你在第二个例子中与不同性质的实验有关。
https://stackoverflow.com/questions/53741332
复制相似问题