Ruby 数组方法 assoc 和 rassoc 的目的是什么?

10
我查阅了Ruby arrayassocrassoc方法文档并理解了它们的作用。这两个方法都适用于数组中的数组。assoc方法返回第一个元素等于所提供参数的数组,而rassoc方法则返回第二个元素等于所提供参数的数组。
我的问题是,这些方法的用途是什么?这种功能非常特定。我猜测这些方法被创建的原因肯定是有一些特殊的需求。那是什么呢?
1个回答

9

有几个原因,但主要原因是为了使数组可以像哈希表一样运行。我认为由于哈希表是无序的,Ruby 设计者需要一种以有序方式表示哈希表的方法。当在哈希表上调用许多可枚举的方法时,它们会返回数组。


2
在Lisp中找到了等效的函数,也许这就是Ruby借鉴的地方。 - echristopherson
自从1.9版本以来,Ruby哈希保证按插入顺序迭代。(虽然我同意你的观点)。 - johncip
@johncip:我认为新的哈希行为并不是普适的(也就是说,在某些情况下依赖它可能会在 JRuby 中出现问题)。 - Linuxios
除非我弄错了,1.9版本之前的行为是未指定的,但保留插入顺序已成为规范的一部分,因此我期望所有实现的最新版本都支持它。但我只使用MRI Ruby。 - johncip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接