メタプログラミングRuby第三章 動的ディスパッチ

重複したプログラムをなくすには?

この際に解決する方法は 動的メソッド と  ゴーストメソッド があります。 今回は動的メソッドに絞って説明します。

動的ディスパッチ

動的メソッドの前に、動的ディスパッチを説明します。 動的ディスパッチとはメソッドを呼び出すことが出来る事です。

何がメリットなのか、わかりづらいのでコードを手順にして 説明していきます。

# 1、2、3と出力させる

class DyanamicEx
  def dyanamic_ex1
     p "1"
  end
  def dyanamic_ex2
     p "2"
  end
  def dyanamic_ex3
     p "3"
  end
end

obj = DyanamicEx.new
obj.dyanamic_ex1 # 1
obj.dyanamic_ex2 # 2
obj.dyanamic_ex3 # 3

3.times  do |i|
  obj = DyanamicEx.new
  # 動的ディスパッチ
  obj.send("dyanamic_ex#{i+1}")  #実行dynamic_ex1 ・・・ ex3
end

動的ディスパッチを用いると、動的にメソッドを実行してくれるので が簡素化されていますね。