exception - Clojure NullPointerException 错误

标签 exception clojure nullpointerexception

我是 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/

相关文章:

java - 什么是取消引用可能的空指针?

java - 什么是NullPointerException,我该如何解决?

python - 如何使 ConfigParser 返回默认值而不是引发 NoOptionError?

clojure - 如何在 Clojure 中有条件地展开 Hiccup 数据结构

c++ - 在 C++ 中执行默认的 catch throw 语句按值或引用传递

postgresql - HikariCP 未检测到数据库 DNS 更改

exception - 如何在 Clojure 中抛出异常?

java - setAdapter() 上的 NullPointer 异常

Azure 服务总线命名空间创建失败并出现未知错误

java - 抛出异常后不会正确捕获 block