Ruby on Rails上’for’和’each’迭代器之间的区别
我对Ruby on rails上的’for’和’each’迭代器的差异有一些疑问。
我有这个案例,这是最好的做法?
application_helper.rb文件中存在的Def(方法):
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文件中的present:
%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
令人惊讶的for
,Ruby中的for
构造几乎从未使用过。 人们倾向于选择each
样式迭代器或其中一个朋友,例如each_with_index
或each_with_object
因为它们更加通用并且通常表现更好。
除非你有一个非常令人信服的理由,否则我强烈建议你使用each
方法。
这些差异在某种程度上是学术上的,但使用each
的巨大优势是你实际上正在与迭代器进行交互,并且你有很多方法可以使用它。 实际上,您可以将迭代器从一个方法传递到另一个方法,并且可以在完成任何工作之前将它们链接在一起以设置正确的结构。
真正的肉在这里是Enumerable ,其中each
都是这种迭代器的最基本版本。 有许多通常更适合您尝试解决的任何问题。
所以,是的, for
和each
基本相同,但each
都更好,因为它有朋友。