2024 Clojure 状况调查!中分享您的想法。

欢迎!请参阅关于页面以了解更多有关此信息。

0
core.match
当使用不存在于映射中的键通过正则表达式匹配映射值时,{{core.match}} 抛出异常。以下是一个示例

{code:none}
(= 2 (match {:foo "bar"}
            {:bar #"bar"} 1
            :else 2))))
 

抛出

{code:none}
java.lang.ClassCastException: clojure.lang.Keyword cannot be cast to java.lang.CharSequence
 at clojure.core$re_matcher.invoke (core.clj:4460)
    clojure.core$re_matches.invoke (core.clj:4497)
...
 

因为在调用 {{re-match}} 时使用了 {{:clojure.core.match/not-found}} 键,因为未找到键。

附带的补丁包含了对该问题的测试用例,并提供了一个解决方案,确保只有在找到键时才调用 {{re-match}},否则温柔地失败。

3 答案

0

评论者:glchapman

我认为这基本上是 MATCH-105 的一种特殊情况

0

评论者:crestani

是的,你的是对的。(链接:https://dev.clojure.org/jira/browse/MATCH-105 文本:MATCH-105) 更健壮应该被应用。

0
参考: https://clojure.atlassian.net/browse/MATCH-123(由 alec+import 报告)
...