欢迎!请参阅 关于 页面以了解更多关于如何工作的信息。
当 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/6570/improve-error-messages-using-instead-when-printing-objects
已记录: https://clojure.atlassian.net/browse/CLJ-2560
1.10.2-alpha2 中已修复
有道理,已记录。