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 (由 alex+import 报告)
...