2012-10-31 10 views
32

defrecordvariousdocumentationに反映されるようClojureScript一つに、「実体」を定義するためのClojureの一般大文字-for好ましい形態は、deftypeにはるかに多くの参照を見つけることができるされています。のDeftype対defrecord

両者の違いは何ですか?どちらが好きですか?

答えて

43

deftypeは、プロトコルを実装するベアボーンオブジェクトを作成します。

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

どちらを使用するかは、必要なものによって異なります。完全なClojureScriptデータ構造が必要ですか?次に、レコードを使用します。あなたはプロトコルを満たすだけで何もしない裸のものを望んでいますか?次に、タイプを使用します。

参照する2種類のドキュメントは、最も基本的なレベルでプロトコルを説明しようとしているため、タイプはレコードよりも「実行」が少ないため使用します。

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

関連する問題