通过正则表达式与地图中不存在的键匹配地图值时,{{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}},否则温和地失败。