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



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

我有这种情况,如何是最好的做法?

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

选择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更好,因为它有朋友。

最新更新