Rubyには2種類のインスタンス生成関数が存在する。
- new
- allocate
MyLogger.new("foo")
と言う風に書くと Class.new
がインスタンス生成。
2つの違いは実行時にinitialize関数が呼ばれるか、呼ばれないかの違いです(だと思っています)。
class MyLogger def initialize(name) # do something end end
先のnew関数でインスタンスを生成すればinitialize
関数が実行されます。生成時に引数を与えたい場合はnewが良いのかなと思います。
MyLogger.new
ちなみにコンストラクタに引数を付けない場合は括弧さえ不要。
MyLogger.allocate
の場合はinitializeは呼ばれません。
参考 teratail.com