もりかわです。 変なSubjectですみません。 次のようなことがやりたくて、クラスをひとつ作りましたが、 同じようなことを他の方法でやっている方はいらっしゃいますか? irb(main):001:0> require 'UClass.rb' irb(main):002:0> h = Hash.new irb(main):003:0> h.store "perl", "confusing" irb(main):004:0> h.store "ruby", "irresistible" irb(main):005:0> lang = UClass.new(h) #<UClass:0x80d6e84 @perl="confusing", @ruby="irresistible"> irb(main):006:0> puts lang.perl confusing irb(main):007:0> puts lang.ruby irresistible もともと、DBのカラム名をもった、各行のオブジェクトを 作りたかったのが発端です。 もしかして標準 or 添付クラスにそういうものが準備されているの かもしれませんが。。。 module_eval を使って書くのは初めてなので、改善点なども意見 いただけるとありがたいです。 #名前を User's Class で UClass にしてます。 uclass_def_attr だけ、UClass.module_eval の中では上手く いかなかったので外に出してあります。 # --- def uclass_def_attr(k) UClass.module_eval <<-END def #{k} @#{k} end END end # --- class UClass end UClass.module_eval <<-END def initialize(h) setup h end def setup(h) h.each_pair { |k,v| def_class_val k,v uclass_def_attr k } #each end def def_class_val(k,v) eval "@\#\{k} = v" end END もりかわ Ruby is irresistible.