我对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_index
或each_with_object
,因为它们明显更通用,通常性能更好。
我强烈建议您使用each
方法,除非您有非常令人信服的理由。
两者的区别有点学术性,但使用each
的最大优点是你实际上是在与一个迭代器交互,并且你有很多使用它的方法。实际上,您可以通过迭代器从一个方法传递到另一个方法,并且可以在执行任何工作之前将它们链接在一起以建立正确的结构。
真正的肉在Enumerable内部,其中each
是这类迭代器的最基本版本。对于你想要解决的问题,有很多方法往往更适合。
所以,是的,for
和each
基本上是一样的,但each
更好,因为它有朋友。