当使用不包含映射中键的正则表达式匹配映射值时,{{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}} 并在其他情况下温和失败来提供解决方法。