我最近开始学习Ruby和哈希。起初我了解到散列是无序的,这是有道理的,但现在我发现散列是与更高版本的Ruby一起订购的。我真的不明白为什么或这背后的概念。
我能否了解有序哈希的用途?对于常规哈希与有序哈希,可能的用例也会很好。
答案 0 :(得分:4)
有些人喜欢依赖Hash的排序,因为ordered-hash会记住键/值对的插入顺序。这允许程序员使用类似于队列的散列,随机访问与键相关联的值。如果他们打算在运行中更改值然后迭代队列的键/值对以再次按插入顺序检索它们,这将非常有用。
此外,他们可以提供符号名称,而不必像在使用基于阵列的队列时那样将索引提供到队列中,而不是必须提供符号名称。
而不是:
queue[0]
他们可以使用:
queue[:fred]
这是我能看到的有序哈希的唯一用例;使用保留插入顺序的密钥队列复制功能非常容易。
答案 1 :(得分:3)
回顾Matz之前的一些帖子,他对于为什么实施这个帖子非常模糊。查看https://www.ruby-forum.com/topic/166075
他基本上说它的实施是为了适应一些边缘情况,但他似乎并没有详细阐述它。他还表示,对性能没有任何影响,只是内存消耗的增长可以忽略不计。
答案 2 :(得分:0)
想象一下git提交,由ruby git包装器处理。它们可能是Hash
的实例,其中sha
为关键字。虽然Date
的排序使它们易于以人性化的方式进行迭代。