deftype vs. defrecord
Während defrecord
ist die bevorzugte form für den Allgemeinen Fall - in Clojure für die Definition einer "Einheit", in ClojureScript kann man weit mehr Verweise auf deftype
, wie Sie sich in verschiedene Dokumentation.
Was ist der Unterschied zwischen den beiden Formen? Welche sollte man bevorzugen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
deftype
erstellt ein bare-bones-Objekt implementiert ein Protokoll.defrecord
schafft eine unveränderliche persistent Karte, die implementiert ein Protokoll.Welche zu verwenden, hängt davon ab, was Sie wollen. Möchten Sie eine vollständige ClojureScript-Daten-Struktur? Verwenden Sie dann einen Datensatz. Wollen Sie einfach nur einen bare-bones-Sache, die nichts tut, sondern befriedigen ein Protokoll? Verwenden Sie dann einen Typ aus.
Die zwei bits der Dokumentation, die Sie Referenz-Typen verwenden, weil Sie versuchen, zu veranschaulichen, Protokolle auf der grundlegendsten Ebene, und die Typen haben weniger "Los" als die Datensätze, so zu sprechen.
Allerdings, meisten real-Welt verwendet von Objekt -, wie die Dinge in Clojure/ClojureScript speichern müssen Felder, die Daten zusammen mit dem Objekt, und für, dass Sie sollten mit Nachdruck verwenden Sie einen Datensatz, aus dem gleichen Grund sollten Sie verwenden Clojure ist immutable collections.
Laut DEFTYPE VS DEFRECORD,
Sie sollten unterscheiden Programmierung Konstrukte und domain-Konstrukte.
deftype
ist für Programmier-Konstrukte unddefrecord
ist für Domänen-Konstrukte, die müssen einen benutzerdefinierten Typ.Hoffe, das hilft.