Ruby クラスメソッドでコンストラクタを実行する

  • 作成日 2021.10.24
  • 更新日 2022.08.01
  • Ruby
Ruby クラスメソッドでコンストラクタを実行する

Rubyで、クラスメソッドでコンストラクタを実行するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

コンストラクタを実行

クラスメソッドを使用すれば、クラス内からコンストラクタを実行することが可能です。

class Hoge
    def initialize(num)
      @num = num
    end
  
    # 擬似的なコンストラクタ
    def Hoge.setval
        Hoge.new(1)
    end
  
    def disp
      p @num
    end
  end
  
  hoge1 = Hoge.new(2)
  hoge1.disp  
  # 2
  
  hoge2 = Hoge.setval  # クラスメソッドから実行
  hoge2.disp  
  # 1

クラス名を「self」に変更することもできます。

class Hoge
    def initialize(num)
      @num = num
    end
  
    # 擬似的なコンストラクタ
    def self.setval
        self.new(1)
    end
  
    def disp
      p @num
    end
  end
  
  hoge1 = Hoge.new(2)
  hoge1.disp  
  # 2
  
  hoge2 = Hoge.setval  # クラスメソッドから実行
  hoge2.disp  
  # 1