プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

オブジェクトにメソッドを取り込む

特定のオブジェクトにだけ振る舞いを与える

モジュールに定義されたメソッドはextendメソッドを用いて、オブジェクトの特異メソッドとして取り込むことができる。

module Greetable
  def greet_to(name)
    puts name
  end
end

o = Object.new
o.extend Greetable
o.greet_to "hoge" #=> hoge

oというオブジェクトに対してGreetableモジュールをextendします。

クラス定義内でモジュールをextendすると、メソッドをクラスメソッドとして取り込むことができる。

class Alice
  extend Greetable
end

Alice.greet_to "hoge" #=> hoge