Jon*_*son 7 ruby arrays iterator
我正在使用列表'a'做这样的事情:
a.each_with_index |outer, i|
a.each_with_index |inner, j|
if(j > i)
# do some operation with outer and inner
end
end
end
Run Code Online (Sandbox Code Playgroud)
如果迭代器不会使用相同的顺序,这将不起作用.我不关心命令究竟是什么,我只需要两个.each_with_index迭代器来使用相同的顺序.
我会假设它是一个数组的属性,它有一个固定的顺序,我只是偏执,迭代器不会使用该顺序...
die*_*mes 15
这取决于Enumerable您正在操作的特定对象.
例如,数组将始终以相同的顺序返回元素.但是其他可枚举对象不能保证以这种方式运行.一个很好的例子是1.8,7基础哈希.这就是许多框架(最着名的是ActiveSupport)实现OrderedHash的原因.
一个有趣的旁注:Hash如果散列在each调用之间没有改变,Even 将以相同的顺序返回对象.虽然许多物体都是这样的,但依靠这种微妙之处可能并不是一个好主意.
所以不行.泛型each不会始终以相同的顺序返回对象.
PS Ruby 1.9的哈希现在实际订购了http://www.igvita.com/2009/02/04/ruby-19-internals-ordered-hash
我没有看过你的实际代码,但这里是你从Ruby API文档中得到的答案:
数组是有序的,任何对象的整数索引集合.
所以,是的,你是偏执狂,但当你正在发展时,这肯定是件好事吗?
| 归档时间: |
|
| 查看次数: |
4479 次 |
| 最近记录: |