- 643 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 15:58:25 ]
- >>641
自己レス。 特定のクラスが(自分の定義中で)自分のインスタンスを生成するには、クラスメソッド(たとえばnew) の中で<自分の名前>.allocateを実行すればいいらしい。(allocate自体はどこからでも呼べる) ただしそのインスタンスをinitializeするには、(自分の定義中にある)他のインスタンスメソッドを 介さなければならない。 なぜなら、<自分の名前>.allocateの戻り値をinstで受け取ったとするとinst.initializeとしたくなるが、 initializeはprivateメソッドなのでレシーバ省略形式でしか呼び出せず、レシーバ省略形式で呼び出す には、(クラスメソッドから呼び出せる)publicなインスタンスメソッドの中で呼び出すしかないから。
|

|