ClojureScript不支持defstruct
-它似乎是设计使然。现在可能这实际上是Clojure语言的不推荐使用的一部分,而ClojureScript的设计者只是希望每个人都继续前进。 (但这是我的推测)。
我的问题是: ClojureScript不需要Clojure的defstruct的原因是什么?
最佳答案
defstruct
已被该语言有效弃用,而推荐使用defrecord
。我们应该继续使用(基于JVM的)Clojure,所以我希望Clojurescript是相同的。请参阅以下内容:
Clojure: data structures:“注意:现在,记录可以更好地使用StructMaps的大多数用法。”
steveminer的ClojureDocs: defstruct评论:“结构已过时。请改用记录。请参见defrecord。”
即将出版的《 Clojure的喜悦》,第二版。 (由Fogus和Houser共同开发的V9版)说:“随着defrecord
的出现,几乎不需要使用结构,因此本书中没有涉及结构。” (第322页)
还要注意《 Programming Clojure,第二版》。由Halloway和Bedra撰写的内容涵盖了defrecord
,但没有涵盖defstruct
(尽管其中有一些顺带提及的结构-可能是从第一版不小心遗漏了)。
我想这些天所有很酷的人都在使用defrecord
。 :-)
Alex Miller's answer转换为“在Clojure中应在哪里使用defrecord?”他对defrecord
的优点(和缺点)进行了很好的讨论,尽管他主要不是将其与defstruct
进行比较。