如何将匹配的:or或core.match中的变量绑定?
user=> (use 'clojure.core.match)
user=> (let [v 2]
#_=> (match [v]
#_=> [((:or 1 2) :as x)] [:foo x]
#_=> :else :bar))
java.lang.RuntimeException: Unable to resolve symbol: x in this context
clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to resolve symbol: x in this context, compiling:(/private/var/folders/jp/y5hpfwq962x476pm_1knzr8c0000gn/T/form-init7072120633012300984.clj:2:10)
user=>发布于 2017-05-08 18:45:57
似乎core.match不允许:or模式被绑定到符号。但是,您总是可以模仿:or的行为与警卫和有保护的模式可以绑定到符号:
(def v [1 2])
(match v
[(x :guard #{1 2}) 2] [:foo x]
:else :bar) ;; => [:foo 1]https://stackoverflow.com/questions/43847558
复制相似问题