茶漬けと玉子焼き

swiftとrubyの教室

Ruby の define_method メソッドで動的にメソッドを定義できる!?

Rubydefine_method で動的にメソッドを定義できるのです。

define_method を使ったことがない人からすれば、
は?
だと思うので、例をば


class Game
  { suzukaze: '青葉', takimoto: 'ひふみ', yagami: 'コウ' }.each do |key, value|
    define_method(key) { value }
  end
end

p Game.new.suzukaze   # => "青葉"
p Game.new.takimoto   # => "ひふみ"
p Game.new.yagami   # => "コウ"


このようにGameクラスに動的に3つの
インスタンスメソッドを定義することができました。