当使用不存在于映射中的键通过正则表达式匹配映射值时,{{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}},否则温柔地失败。