Ruby 初心者スレッド Part 52
■ このスレッドは過去ログ倉庫に格納されています
0556デフォルトの名無しさん
2013/10/01(火) 17:04:39.26なぜならnewというメソッドはデフォルトではどこにも定義されていないから
C.newと書かれていたとき、(C.newというメソッドがなければ)RubyはCクラスのプライベートメソッドinitializeを参照する決まりになっている
Rubyにおいて、クラス定義からオブジェクトを作るときの手順を記述したいときはinitializeに書「かなければならない」
initializeが動作する通常の場合においてC.newとするとCクラスの新規オブジェクトが自動で生成されて返ってくるが、
newを再定義した場合におけるC.newはnewメソッド内で定義した最後の処理のオブジェクトを返す
それは通常Cクラスの新規オブジェクトではありえない
もし、新規オブジェクトを作る意味が薄い「一連の処理をまとめて起動して終わるだけのカタマリ」を記述したいのなら、
クラスではなくモジュールとして定義して、なんか適当な特異メソッドを適当な名前で定義して呼ぶようにするといい
なにも思いつかなかったらrunとかどうだろう
■ このスレッドは過去ログ倉庫に格納されています