gpt4 book ai didi

clojure - 我可以向 clojure 类型添加字段吗?

转载 作者:行者123 更新时间:2023-12-04 12:01:25 26 4
gpt4 key购买 nike

Clojure 结构可以任意扩展,添加新字段。

是否可以以类似的方式扩展类型(使用 deftype 创建)?

编辑:为了将来访问者的利益,正如布赖恩在下面指出的那样,此功能可能会发生变化。

最佳答案

实际上,您可以将类型视为映射,您只需要扩展 clojure.lang.IPersistentMap(神奇地提供了一个实现)。

(deftype A [a b]
clojure.lang.IPersistentMap)
(A 1 2) ;; => #:A{:a 1, :b 2}
(assoc (A 1 2) :c 3) ;; => #:A{:a 1, :b 2, :c 3}

备注

Clojure 已将类型的语义拆分为 defrecorddeftype .对于大多数应用程序级编程,您需要使用记录。方便的是,它们自动提供了 clojure.lang.IPersistentMap 的实现。 ,不需要魔法。

关于clojure - 我可以向 clojure 类型添加字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2475196/

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