From: sinara@... Date: 1997-03-13T16:07:20+09:00 Subject: [ruby-list:2373] Re: [Req] Hash#reverse (Re: [Req] Array#reverse ) 原です。 > まつもと ゆきひろです. > と,思ったら連想配列に代入すると逆変換になるようですね.おそ > るべし,perlのコンテキスト.rubyにはコンテキストなんて概念は > ないので,名前で変えるしかないですね. reverse %hash; は基本的にはハッシュで、@array = reverse %hash; はハッシュが配列コンテキストで評価されている、と理解していまし たが、、。 > |この際、 > | > | { 1=>10, 2=>20, 3=>30 }.reverse ==> { 10=>1, 20=>2, 30=>3 } > | > |に加えて、 > | > | { 1=>10, 2=>10, 3=>30 }.inverse ==> { 10=>[1,2], 30=>[3] } > | > |というのも作っちゃうとか、、、。 > > どちらの動作が望ましいですか? 後者はツリー構造を Hash で作った時の解析に便利なんですが、前者の ほうが理解しやすく使う場面も多いかと思います。 > しかし, > > nhash={} > hash.each do |k,v| > nhash[v]=k > end > > の4行で実装できるものをわざわざ組み込む必要もない気がしない > でもない.速度もそんなに違わないし.後者の動作なら それを言っちゃあおしまいよ。^^; でも Hash クラスの他のメソッド の充実度のバランスからいってあっても良いかと。