« Return to Thread: [ruby-list:43857] Hashへの生成順は保障されないのか?

[ruby-list:43905] Re: Hashへの生成順は保障されないのか?

by rubikitch :: Rate this Message:

Reply to Author | View in Thread

るびきちです。

僕もHashをOrderedHash化するのには反対です。
それとは別にOrderedHashを作るべきでしょう。

--

以下は記法の話。

ただ、{ 1=>"one", 2=>"two" }というリテラル(現在はHashですが)が表す
オブジェクトには順序が保存されてればいいなと思ったことはあります。
かといって {〜} をOrderedHashリテラルにしてしまうと
Hashの文字列表記も同じになるので混乱を生じます。

仮に [ 1=>"one", 2=>"two" ] をOrderedHashリテラルにしてみるとどうなんでしょうね。
Hashの機能を持ちながら配列の機能(順序保存)を持っているので適任な気がします。
Ruby 1.8では [{1=>"one", 2=>"two"}] と解釈されるけど、
この記法で Hash 1つからなる配列を作ることは稀な気がします。

でも、OrderedHashってそんなに利用頻度高いのかな?ただあると便利なだけかな?
要素数が少なければ普通に alist で十分な気がします。

そもそもRubyのHashに順序を期待する人が現れるのは、
Hashリテラルが少し配列っぽく見えるからだと僕は考えています。
{1,2,3,4}( {1=>2, 3=>4} と解釈される)なんてのもできますし。

--
rubikitch
http://www.rubyist.net/~rubikitch/

 « Return to Thread: [ruby-list:43857] Hashへの生成順は保障されないのか?