'for' 和 'each' 迭代器在 Ruby 和 Rails 上的区别

Difference between 'for' and 'each' Iterators on Ruby on Rails

我对 'for' 和 'each' 迭代器在 Ruby 和 rails 上的区别有一些疑问。

我有这种情况,最好的做法是什么?

Def(方法) 存在于 application_helper.rb 文件中:

  def milestone_icons
    icons = ["", "icon-world", "icon-star-twohdd-o", "icon-users", "icon-notification", "icon-clock", "icon-eye", "icon-like-filled", "icon-credit-card", "icon-bell" ]
end

Select 存在于 haml 文件中:

%select.js-select-icons{style: 'width: 50px', name: 'milestone[icon]'}
  - for icon in milestone_icons do
      %option{value: icon, type: "icon", selected: (@generic.icon == icon)}
        = "<i class='#{icon}'></i>".html_safe

令人惊讶的是 Ruby 中的 for 构造几乎从未使用过。人们倾向于更喜欢 each 风格的迭代器或它的朋友之一,如 each_with_indexeach_with_object,因为它们更加通用并且通常性能更好。

我强烈建议您使用 each 方法,除非您有非常令人信服的理由。

差异在某种程度上是学术性的,但使用 each 的最大优势是您实际上是在与迭代器交互,并且您有很多使用迭代器的方法。实际上,您可以通过迭代器从一种方法传递到另一种方法,并且可以将它们链接在一起以在执行任何工作之前设置正确的结构。

这里真正的核心是 Enumerable,其中 each 是这种迭代器的最基本版本。有许多通常更适合您要解决的任何问题。

所以,是的,foreach基本上是一样的,但是each更好,因为它有朋友。