欢迎!请查看关于页面以了解更多关于这个工作如何进行的信息。
当 case 遇到不匹配的条款时生成的错误信息使用 str,导致 nil 被渲染为空字符串,而没有引号的字符串。
str
例如
(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
nil
"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 中修复
有道理,已记录。