gpt4 book ai didi

exception - Clojure NullPointerException 错误

转载 作者:行者123 更新时间:2023-12-02 11:29:55 25 4
gpt4 key购买 nike

我是 clojure 新手,尝试编写简单的函数来获取数字列表并仅过滤偶数。

我想在没有过滤器的情况下完成它,甚至?,只有纯clojure

(defn my-even [ilist]
(if
(= (mod (first ilist) 2) 0)
(concat (list (first ilist)) (my-even (rest ilist)))
(my-even (rest ilist))
)
)

我尝试运行它:

(my-even '(1,2,3,4,5))

但出现错误:

#<CompilerException java.lang.NullPointerException (NO_SOURCE_FILE:0)>

出了什么问题?

谢谢。

最佳答案

正如乔纳斯所说,你没有基本案例;除此之外,将括号放在单独的行上并不是 Clojure(或任何其他 Lisp)惯用的做法,还要将 if 的谓词保持在同一行。

通过解构,它的可读性更强:

(defn my-even? [coll]
(if-let [[first & rest] coll]
(if (= (mod first 2) 0)
(cons first (my-even? rest))
(my-even? rest))))

关于exception - Clojure NullPointerException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com