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进行比较。

10-01 06:52