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_indexeach_with_object因为它们更加通用并且通常表现更好。

除非你有一个非常令人信服的理由,否则我强烈建议你使用each方法。

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

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

所以,是的, foreach基本相同,但each都更好,因为它有朋友。