加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby中的.each迭代器是否保证每次都在相同的元素上给出相同的顺

发布时间:2020-12-16 20:50:33 所属栏目:百科 来源:网络整理
导读:我正在使用列表’a’做类似的事情: a.each_with_index |outer,i| a.each_with_index |inner,j| if(j i) # do some operation with outer and inner end endend 如果迭代器不会使用相同的顺序,这将不起作用.我不关心命令究竟是什么,我只需要两个.each_with_i
我正在使用列表’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

如果迭代器不会使用相同的顺序,这将不起作用.我不关心命令究竟是什么,我只需要两个.each_with_index迭代器来使用相同的顺序.

我会假设它是一个数组的属性,它有一个固定的顺序,我只是偏执,迭代器不会使用该顺序…

解决方法

这取决于您正在操作的特定Enumerable对象.

例如,数组将始终以相同的顺序返回元素.但是其他可枚举的对象并不能保证以这种方式运行.一个很好的例子是1.8,7基础哈希.这就是许多框架(最着名的是ActiveSupport)实现OrderedHash的原因.

一个有趣的旁注:如果散列在每次调用之间没有改变,Even Hash将以相同的顺序返回对象.虽然许多物体都是这样的,但依靠这种微妙之处可能并不是一个好主意.

所以不行.通用的每个都不会总是以相同的顺序返回对象.

附: Ruby 1.9的哈希现在实际订购了http://www.igvita.com/2009/02/04/ruby-19-internals-ordered-hash

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读