Rubyでメタプログラミング define_methodについて
メタプログラミングRubyを読んでいて、動的なメソッド定義を勉強したのですが、
動的なメソッド定義をするメリットがいまいちよくわかりません。
仕組みについては理解できたのですが、これをやることでどのように救われるのでしょうか?
class Book
def initialize(name, author)
@name = name
@author = author
end
def self.define_component(name)
define_method(name) do |text|
puts @name + " is so nice book!"
@author + text
end
end
end
# インスタンスの作成
wilde = Book.new("the picture of dorian gray", "wilde")
shake = Book.new("hamlet", "shakespeare")
# メソッドの作成
Book.define_component :the_picture_of_dorian_gray
Book.define_component :hamlet
# 作成したインスタンスで、新しく作ったインスタンスメソッドを利用
puts wilde.the_picture_of_dorian_gray(" is nice!")
# => the picture of dorian gray is so nice book!
# => wilde is nice!