For Gauche 0.9.5


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

6.17 Weak ポインタ

Weak ポインタとは、それが参照しているオブジェクトがガベージコレクトされることを 許すようなポインタです。 Gaucheはweak ベクタオブジェクトによってweak ポインタの機能を提供します。 Weak ベクタは通常のベクタに似ていますが、要素のオブジェクトがweak ベクタ以外から 参照されていない場合、オブジェクトはガベージコレクトされ、weak ベクタの該当するエントリは #fで置き換えられます。

gosh> (define v (make-weak-vector 1))
v
gosh> (weak-vector-ref v 0)
#f
gosh> (weak-vector-set! v 0 (cons 1 1))
#<undef>
gosh> (weak-vector-ref v 0)
(1 . 1)
gosh> (gc)
#<undef>
gosh> (gc)
#<undef>
gosh> (weak-vector-ref v 0)
#f
Builtin Class: <weak-vector>

Weak ベクタのクラスです。<sequence><collection>を継承しているので、 gauche.collection (コレクションフレームワーク参照) と gauche.sequence (シーケンスフレームワーク参照) も使えます。

(coerce-to <weak-vector> '(1 2 3 4))
  ⇒ a weak vector with four elements
Function: make-weak-vector size

大きさsizeのweak ベクタを作成して返します。

Function: weak-vector-length wvec

weak ベクタ wvecの大きさを返します。

Function: weak-vector-ref wvec k &optional fallback

weak ベクタ wveck番目の要素を返します。

weak-vector-refkが負の値であったりベクタの長さより 大きかったりした場合はエラーを通知します。但し、省略可能な引数fallback が与えられている場合はその値が返されます。

該当する要素が既にガベージコレクトされていた場合、fallbackが 与えられていればそれが、そうでなければ#fが返されます。

gauche.sequenceモジュールをロードしていれば、 メソッドrefも同じ目的で使えます。

Function: weak-vector-set! wvec k obj

weak ベクタ wveck番目の要素をobjに変更します。 kが負数であったりベクタの長さより大きい場合はエラーとなります。


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