たとえば、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
うまく利用できれば楽しそう!!
だけどいい利用法を思いつかない。
トリッキーなだけの実装になりかねないので注意して使うようにしよう。