Ruby 初心者スレッド Part 27
■ このスレッドは過去ログ倉庫に格納されています
0643デフォルトの名無しさん
2009/04/28(火) 15:58:25自己レス。
特定のクラスが(自分の定義中で)自分のインスタンスを生成するには、クラスメソッド(たとえばnew)
の中で<自分の名前>.allocateを実行すればいいらしい。(allocate自体はどこからでも呼べる)
ただしそのインスタンスをinitializeするには、(自分の定義中にある)他のインスタンスメソッドを
介さなければならない。
なぜなら、<自分の名前>.allocateの戻り値をinstで受け取ったとするとinst.initializeとしたくなるが、
initializeはprivateメソッドなのでレシーバ省略形式でしか呼び出せず、レシーバ省略形式で呼び出す
には、(クラスメソッドから呼び出せる)publicなインスタンスメソッドの中で呼び出すしかないから。
■ このスレッドは過去ログ倉庫に格納されています