For Gauche 0.9.14Search (procedure/syntax/module):

Next: , Previous: , Up: 組み込みライブラリ   [Contents][Index]

6.17 ボックス

ボックスは0個以上の値を格納できる変更可能なコンテナです。 小さなデータストア、あるいは間接参照のための「ポインタ」として使うことができます。

伝統的に、この目的にはリストやベクタが使われてきました。 しかし、リストやベクタはオブジェクトの列を扱うものと考えられます。 ボックスを使うことにより、目的がオブジェクトの列ではなく間接参照であると強調できます。

ボックスはSRFI-111で導入され、R7RS-largeにscheme.boxとして採り入れられました。 SRFI-195はボックスを多値に拡張しました。

SRFIではいくつかの詳細を実装依存にしています。Gaucheの選択は次のとおりです。

ポータブルなコードを書いている時は、上記equal?の振る舞いに依存しないように 気をつけてください。

Function: box val …

[R7RS box][SRFI-195] val …を内容とする新たなボックスを作って返します。

Function: box? obj

[R7RS box] objがボックスなら#tを、そうでなければ#fを返します。

Function: box-arity box

[SRFI-195] boxが保持している値の数を返します。

Function: unbox box

[R7RS box] boxの内容を返します。boxがN個の値を保持していれば、N個の値が返されます。

Function: unbox-value box i

[SRFI-195] boxの値のうち、i番めのものを返します。

Function: set-box! box val …

[R7RS box][SRFI-195] boxの内容をval …で置き換えます。 値の数はボックスのアリティと同じでなければなりません。 戻り値は未定義です。

Function: set-box-value! box i val

[SRFI-195] boxi番めの値をvalで置き換えます。 戻り値は未定義です。


Next: , Previous: , Up: 組み込みライブラリ   [Contents][Index]


For Gauche 0.9.14Search (procedure/syntax/module):