動的クラス生成
動的というか、構文要らずというか。
例外処理は構文使ってるけど。
classid = 1234567 eval("MyEx#{classid} = Class.new(Exception)").class_eval{ define_method(:initialize){|obj| @obj = obj } define_method(:obj){ @obj } } hash = {:a=>"A", :b=>"B"} begin raise eval("MyEx#{classid}").new(hash) rescue eval("MyEx#{classid}") => ex puts 'rescue!' # => rescue! end p ex # => #<MyEx1234567: MyEx1234567> p ex.obj # => {:b=>"B", :a=>"A"} p ex.obj.equal?(hash) # => true p ex.class # => MyEx1234567
こんなことができるのかぁ。