たとえば、nameっていうプロパティを持ったクラスをいっぱい定義したいとすると…
def define_class *args args.each do |name| eval <<-E class #{name} attr_accessor :name end E end end
こんなメソッドを用意しておいて
define_class( "Person", "Departments", "Employees") person = Person.new person.name = "Tarou" puts person.name d = Departments.new d.name = "総務部" puts d.name e = Employees.new e.name = "Jirou" puts e.name
このように使う。
実行結果
Tarou 総務部 Jirou
うまく利用できれば楽しそう!!
だけどいい利用法を思いつかない。
トリッキーなだけの実装になりかねないので注意して使うようにしよう。