gpt4 book ai didi

clojure - Clojure 中记录的模式匹配

转载 作者:行者123 更新时间:2023-12-04 21:13:46 28 4
gpt4 key购买 nike

这个现在支持吗?我能找到的唯一信息是来自维基的示例( https://github.com/clojure/core.match/wiki/Deftype-and-defrecord-matching )
这会产生一个错误:

CompilerException java.lang.AssertionError: Invalid list syntax (Red. (Red. a x b) y c) in (Black. (Red. (Red. a x b) y c) z d). Valid syntax: [[:default :guard] [:or :default] [:default :only] [:default :seq] [:default :when] [:default :as] [:default :<<] [:default :clojure.core.match/vector]]

最佳答案

这尚未实现,但由于记录的行为与 map 一样,您可以执行以下操作:

(defrecord ab [a b])
user.ab
user> (let [x (->ab 1 1)]
(match [x]
[{:a _ :b 2}] :a0
[{:a 1 :b 1}] :a1
[{:c 3 :d _ :e 4}] :a2
:else nil))
:a1

也可以对记录的类型进行匹配,但有点不雅。
user> (let [x (->ab 1 1)
aba user.ab]
(match [(type x) x]
[aba {:a _ :b 2}] :a0
[aba {:a 1 :b 1}] :a1
[aba {:c 3 :d _ :e 4}] :a2
:else nil))
:a1

https://github.com/clojure/core.match/wiki/Basic-usage#map-patterns

关于clojure - Clojure 中记录的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29183900/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com