欢迎!有关如何运作的更多信息,请参阅关于页面。
当case遇到不匹配的条款时生成的错误信息使用str,导致nil被渲染为空字符串,以及没有引号的字符串。
case
str
nil
例如
(let [x nil] (case x 1 :a 2 :b)) ;; => ;; Unhandled java.lang.IllegalArgumentException ;; No matching clause for x:
以下可能是令人困惑的
(let [x "1"] (case x 1 :a 2 :b)) ;; => ;; Unhandled java.lang.IllegalArgumentException ;; No matching clause for x: 1
使用pr-str来禁用nil和分别产生"1"的值,这样是否更不模糊?
pr-str
"1"
注意:在Clojurescript这里也有类似的问题 https://ask.clojure.org/index.php/6575/improve-error-messages-using-instead-when-printing-objects
已记录:https://clojure.atlassian.net/browse/CLJ-2564
在1.10.2-alpha2中修复
有道理,已记录。