34

Clojure では「エンティティ」をdefrecord定義するための一般的な形式として が推奨されていますが、ClojureScript では、さまざまなドキュメントdeftypeに反映されているように、への参照をはるかに多く見つけることができます。

両方の形式の違いは何ですか? どちらを好むべきですか?

4

2 に答える 2

49

deftypeプロトコルを実装する必要最小限のオブジェクトを作成します。

defrecordプロトコルを実装する不変の永続的なマップを作成します。

どちらを使用するかは、目的によって異なります。完全な ClojureScript データ構造が必要ですか? 次に、レコードを使用します。プロトコルを満たすだけの必要最小限の機能が必要ですか? 次に、タイプを使用します。

あなたが参照する 2 つのドキュメントは、最も基本的なレベルでプロトコルを説明しようとしているため、型を使用しています。

ただし、Clojure/ClojureScript でオブジェクトのようなものを実際に使用する場合は、オブジェクトと共にデータのフィールドを格納する必要があります。そのためには、Clojure の不変コレクションを使用する必要があるのと同じ理由で、レコードを強調して使用する必要があります。

于 2012-10-31T20:40:02.577 に答える
1

DEFTYPE VS DEFRECORDによると、プログラミング構造ドメイン構造を区別する必要があります。

deftypeはプログラミング コンストラクトdefrecord用であり、カスタム タイプを必要とするドメイン コンストラクト用です。

お役に立てれば。

于 2019-02-01T21:03:53.387 に答える