我真的感到困惑,因为它导致了几个小时的头部刮伤;我有以下代码段
objectA.arrayA.each do |p|
do stuff with p
end
我认为这很好,因为从this question我觉得因为我正在使用阵列工作所以我应该没事。不幸的是,情况并非如此,因为每个迭代器返回元素的顺序并不总是相同的。经过几个小时的查看其他块以解决问题,使用for循环交换上面的代码解决了问题:
for i in 0...objectA.arrayA.length
do stuff with the array element
end
任何人都知道每个人的订购保证?
答案 0 :(得分:1)
Enumerable mixin提供了几个集合类 遍历和搜索方法,并具有排序的能力。该 class必须提供一个方法,其中产生连续的成员 集合。如果使用了Enumerable#max,#min或#sort,则为对象 在集合中还必须实现一个有意义的< =>运营商,作为 这些方法依赖于集合成员之间的排序。
所以Array.each
也必须让连续成员符合这份合同
如果某个实现没有强制执行此操作,那么这将是实现中的错误