欢迎!请查看关于页面以了解更多关于这个平台的信息。
当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中
有道理,已记录。