当评估这个超级简单的 core.match 表达式时,我得到:
(match [(class "3.14")]
[Integer] "Integer"
[Double] "Doubler")
; => "Integer"
这怎么可能是正确的,我是否遗漏了有关 core.match 的一些基本内容?在此表单上执行 Macroexpand-1 可以得到:
=> (clojure.core/let [ocr-2751 (class "3.14")] (clojure.core/let [Integer ocr-2751] "Integer"))
任何指示表示赞赏。
就像@Arthur说的,通常core.match
将值绑定到符号。然而,显然,它首先尝试与当地人比赛 https://github.com/clojure/core.match/blob/master/src/main/clojure/clojure/core/match.clj#L1667。谁知道?
无论如何,将类绑定为本地类let
在匹配之前,你就可以开始了:
(let [Integer java.lang.Integer
String java.lang.String]
(match [(class "3.14")]
[Integer] "Integer"
[String] "String"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)