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

Next: , Previous: , Up: ライブラリモジュール - Gauche拡張モジュール   [Contents][Index]

9.20 gauche.mop.singleton - シングルトン

Module: gauche.mop.singleton

シングルトンクラスを定義するためのメタクラスを提供します。

Class: <singleton-meta>

{gauche.mop.singleton} シングルトンクラスを生成します。シングルトンクラスはそのインスタンスが ただ一つしかないことを保証するクラスです。 make の 最初の呼び出しで、唯一のインスタンスを生成し、その後の呼出しでは 最初に生成したものと同一のインスタンスを返します。

(define-class single () () :metaclass <singleton-meta>)

(define a (make single))
(define b (make single))

(eq? a b) ⇒ #t

インスタンスのスロットは最初の make の呼び出し時に 初期化されます。makeへの初期引数は最初の呼び出しのときに だけ効果があり、それ以降の呼び出しでは無視されます。

初期化ルーチンの呼び出しはスレッドセーフです。

Method: instance-of (class <singleton-meta>) :rest initargs

{gauche.mop.singleton} このメソッドは渡された引数とともに make を呼んでいるだけです。 シングルトンを扱うプログラム中ではこちらの方が分りやすいでしょう。

Class: <singleton-mixin>

{gauche.mop.singleton} <singleton-meta>のインスタンスです。<singleton-meta>define-class:metaclass 引数として指定せずに、 このクラスを継承することで、定義しようとするクラスにシングルトンの 性質を与えることができます。


Next: , Previous: , Up: ライブラリモジュール - Gauche拡張モジュール   [Contents][Index]


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