Next: 遅延評価, Previous: パラメータと動的状態, Up: 組み込みライブラリ [Contents][Index]
ボックスは0個以上の値を格納できる変更可能なコンテナです。 小さなデータストア、あるいは間接参照のための「ポインタ」として使うことができます。
伝統的に、この目的にはリストやベクタが使われてきました。 しかし、リストやベクタはオブジェクトの列を扱うものと考えられます。 ボックスを使うことにより、目的がオブジェクトの列ではなく間接参照であると強調できます。
ボックスはSRFI-111で導入され、R7RS-largeにscheme.box
として採り入れられました。
SRFI-195はボックスを多値に拡張しました。
SRFIではいくつかの詳細を実装依存にしています。Gaucheの選択は次のとおりです。
equal?
で比較すると、ボックス自体がeqv?
でない場合、
その内容をequal?
で比較します。
SRFIでは、二つのボックスがeqv?
でない場合のequal?
の振る舞いは
規定されていません。
ポータブルなコードを書いている時は、上記equal?
の振る舞いに依存しないように
気をつけてください。
[R7RS box][SRFI-195]
val
…を内容とする新たなボックスを作って返します。
[R7RS box]
objがボックスなら#t
を、そうでなければ#f
を返します。
[SRFI-195] boxが保持している値の数を返します。
[R7RS box] boxの内容を返します。boxがN個の値を保持していれば、N個の値が返されます。
[SRFI-195] boxの値のうち、i番めのものを返します。
[R7RS box][SRFI-195] boxの内容をval …で置き換えます。 値の数はボックスのアリティと同じでなければなりません。 戻り値は未定義です。
[SRFI-195] boxのi番めの値をvalで置き換えます。 戻り値は未定義です。
Next: 遅延評価, Previous: パラメータと動的状態, Up: 組み込みライブラリ [Contents][Index]