相关疑难解决方法(0)

Clojure开发人员常见的编程错误

Clojure开发人员犯了哪些常见错误,我们如何避免这些错误呢?

例如; Clojure的新人认为这个contains?功能的作用是一样的java.util.Collection#contains.但是,contains?只有在使用索引集合(如地图和集合)并且您正在寻找给定键时,它才会起作用:

(contains? {:a 1 :b 2} :b)
;=> true
(contains? {:a 1 :b 2} 2)
;=> false
(contains? #{:a 1 :b 2} :b)
;=> true
Run Code Online (Sandbox Code Playgroud)

与数字索引集合(向量,数组)一起使用时,contains? 检查给定元素是否在有效索引范围内(从零开始):

(contains? [1 2 3 4] 4)
;=> false
(contains? [1 2 3 4] 0)
;=> true
Run Code Online (Sandbox Code Playgroud)

如果给出一个列表,contains?将永远不会返回true.

clojure

92
推荐指数
7
解决办法
2万
查看次数

为什么这个以println开头的匿名函数会导致NullPointerException?

我正在学习pmap并编写以下函数:

(pmap #((println "hello from " (-> (Thread/currentThread) .getName)) 
         (+ %1 %2)) 
   [1 1 1] [-1 -1 -1])
Run Code Online (Sandbox Code Playgroud)

运行时,结果是a NullPointerException

(hello from  clojure-agent-send-off-pool-4
hello from  clojure-agent-send-off-pool-3
hello from  clojure-agent-send-off-pool-5
NullPointerException   user/eval55/fn--56 (NO_SOURCE_FILE:11)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我已经理解并观察到a的主体fn是隐含的do.

clojure

6
推荐指数
1
解决办法
298
查看次数

标签 统计

clojure ×2