もりかわです。

変な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.