当逃避这个超级简单的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
会将值绑定到符号上。但是,显然,它首先尝试与本地人匹配。谁知道?
无论如何,let
在匹配之前将类绑定为locals即可,您可以开始:
(let [Integer java.lang.Integer
String java.lang.String]
(match [(class "3.14")]
[Integer] "Integer"
[String] "String"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句