在clojure repl我可以这样做:
=> (int \a)
97
Run Code Online (Sandbox Code Playgroud)
在closurescript中,我不断得到
=> (int \a)
0
Run Code Online (Sandbox Code Playgroud)
在我目前的clojurescript项目中,我定义了一个var:
(def ord-a (int \a))
Run Code Online (Sandbox Code Playgroud)
当我检查发出的javascript时,我看到:
ord_a = ("a" | (0));
Run Code Online (Sandbox Code Playgroud)
这解释了差异,但并没有真正做到我想要的.所以:
假设我有一个m类似的地图{"good1" 1, "bad1" 1, "good2" 2, "bad2" 2},并且我想根据地图键上的某些谓词删除条目,一种方法是:
(defn dissoc-by [f m] (->> m (filter (complement f)) (into {})))
(dissoc-by #(.contains (first %1) "bad") m)
=> {"good1" 1, "good2" 2}
Run Code Online (Sandbox Code Playgroud)
在clojure中有更多惯用的方法吗?
我有形状的代码
(let [{foo :foo} (make-foo)] ...)
Run Code Online (Sandbox Code Playgroud)
这段代码偶尔发出一个java.lang.IllegalArgumentException: No value supplied for key: {:foo "foo" :other "other"}.
我见过Clojure:"java.lang.IllegalArgumentException:没有为key提供值:"当我更改require时,但是我没有更改我的程序的需求,因为它上次工作.
"没有为密钥提供的值"例外的可能原因是什么?
temp1 = [1,2,3,4]
temp2 = [4,3,2,1]
Run Code Online (Sandbox Code Playgroud)
两个数组与以下输出合并
temp3 = [ [1,4], [2,3], [3,2], [4,1] ]
Run Code Online (Sandbox Code Playgroud)
并不是临时数组只有4个元素.它可以在两个阵列中具有5-5,6-6个元素而不是5-6个元素.