当通过正则表达式匹配映射值时,如果键不在映射中,{{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}},否则优雅地失败。