Rubyのインスタンス生成


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

ref.xaio.jp