メタプログラミング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
動的ディスパッチを用いると、動的にメソッドを実行してくれるので が簡素化されていますね。