(rontolisp) docs
← マップ・セット・ベクター

transient

(transient coll)

ベクター・マップ・セット coll のコピーの上のトランジェントです。! 付きの操作 (conj!、assoc!、dissoc!、 disj!、pop!)はそのコピーをその場で編集するので、1回の 操作は1回の編集で済み、persistent! がそれをコレクションとして返します。 coll は変わりません。トランジェントはコレクションではありません。count・get・nth・ contains?・find・呼び出し・キーワードは読めますが、seq(と seq ビューを通る全操作)は 拒否し、= と hash は同一性で、オラクルの #object から同一性ハッシュを除いた形で印字されます。 リスト・ソート済みコレクション・レコード・文字列はオラクルの ClassCastException、nil は NullPointerException として拒否されます。IEditableCollection を実装する型はその asTransient を返します。値としては1引数関数です。

仕様との差異: ! 付きの操作はトランジェント自身を返します。オラクルは別のオブジェクトを返す ことがあります(8エントリーを超えたアレイマップの assoc!)。返り値を使うプログラムは同じに 動きます。末尾を過ぎた nth はベクターと同じく nil を返します。