(rontolisp) docs
← プロトコル、レコード、型

deftype

(deftype Name [fields...] Protocol (method [target & args] body...) ...)

deftype を定義します。マップ動詞には不透明な、レコード形の値です。不透明な :C%TYPE タグでレコードと同じ形(クラス名を含む)を共有します。読みは外れ(get は既定値を 答え)、書きと seq・count・empty? はシグナルを上げ、= は同一性です (いずれもオラクル同様)。位置指定コンストラクタ ->Name のみ lower されます (オラクルは deftype に map->Name を定義しません)。(Name. ...) は書き換わり ます。インラインのメソッド本体には defrecord 同様フィールドがローカルとして 見えます。^:unsynchronized-mutable または ^:volatile-mutable を付けたフィールドは それらのメソッド専用で、メソッドは set! で代入します。インスタンス 呼び出しはインラインのメソッドと不変フィールドに届きます(.name)。名前は ファイル全体の事前走査に参加します。