singletonメソッドについて

投稿日: Mar 20, 2009 12:25:4 PM

R4.1ではsingletonというメッセージを送るだけで、シングルトンとなるオブジェクトを簡単に生成できます。

Foo singleton == Foo singleton. "=> true"

singletonを送ると、Fooのシングルトンが生成されます。常に同一のインスタンスが返ってきます。

ここで特筆すべきは、既存のシングルトンでなかったインスタンスも、singletonが送られた時点で自動的にシングルトンになるということです。

instA := Foo new.

instB := Foo new.

instA ~= instB. "=> false"

singleton := Foo singleton.

instA == singleton. "=> true"

instA == instB. "=> true"

超便利ですね。ちなみにArrayなどのコアなクラスにsingletonと送ったりすると、なかなか貴重な体験ができます。