From: rubikitch@... Date: 2008-01-29T23:46:40+09:00 Subject: [ruby-dev:33508] Re: HashからStructを作る From: Yukihiro Matsumoto Subject: [ruby-dev:33507] Re: HashからStructを作る Date: Tue, 29 Jan 2008 23:34:17 +0900 > 「Struct.new(:a => 1)」で「Struct.new(:a).new(1)」の意味なん > ですね。プログラムにちゃんとそう書いてあるのに。 > > ま、それは私の間違いなんで置いといて、そうすると、インスタン > スがひとつしかないStructを毎回作ることになりますね。それって > どれだけうれしいんですかね。外から見る限り、単なるHashと大差 > ないような。もちろん多少メモリ効率は違いますが、それ意外に特 > にうれしいことはなさそうな上に、生成するのにHashひとつ、イン > スタンスごとに無名クラスひとつ作っちゃうのでそこまでメモリ効 > 率もよくはないような。 やっぱり st.a のようにアクセサでアクセスできることです。 アクセサの方がオブジェクト指向している感じだし、 メンバ名の打ち間違いをしようものならエラーを投げてくれるので使う方としては とても嬉しいです。 > Struct.new(:a, :b).new(:a => 1, :b => 2) こっちもいいですね。 Foo = Struct.new(:a, :b) Foo.new(:a => 1, :b => 2) サブクラスの方でもHashが使えると地味に嬉しいです。 複数の構造体オブジェクトを作る場合は↑の方法もありますし。 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/