From: Yukihiro Matsumoto Date: 2008-02-14T17:12:34+09:00 Subject: [ruby-dev:33777] Re: HashからStructを作る まつもと ゆきひろです In message "Re: [ruby-dev:33734] Re: HashからStructを作る" on Wed, 13 Feb 2008 13:07:52 +0900, rubikitch@ruby-lang.org writes: |あるいは、Hashのキーを固定する(追加不可能、存在しないキーにアクセスしたら例外) |メソッドを作成できないものでしょうか? |Hash#fix_keys, Hash#freeze_keys, Hash#fix, Hash#lock, Hash#pin, Hash#fixate… それはちょっと無理筋でしょう。 Struct.xxxx(hash) でハッシュキーをメンバに持つStructを定義し、対応するバリュー で初期化したインスタンスを作るというのはアリだと思います。ま た、 Struct.new(:foo, :bar, :baz).xxxx2(hash) で既存のStructをハッシュで初期化するのもアリでしょう。でも、 それぞれnewという名前は止めた方がよいのではないでしょうか。 |Kernel#BigDecimalやKernel#URIに倣ってKernel#Structでどうでしょうか? |変換器という意味合いです。 |当然Structを指定したら自分自身を返すようにします。 うーん、Structに変換しているわけではないですからねえ。