【发布时间】:2011-03-21 13:04:43
【问题描述】:
我现在正在学习 Ruby 和 RoR,我遇到了这个:
<% for post in @posts %>
在Rails guide。我知道在 Ruby 中执行此操作的惯用方法是:
<% @posts.each do |post| %>
如果有区别,那是什么?如果没有区别,那么 Rails 人员推动正确的 Ruby 习语不是更好吗(而不是这个,这对我来说看起来更像 Python)?
编辑:我刚刚发现了两个相互矛盾的解释:Tutorials Point 说它们是相同的,除了“for 循环不会为局部变量创建新范围”,而CS.Auckland.ac.NZ 表示 for 只是等效 .each 的语法糖。
Edit2: 有问题的for ... in 是由script/generate scaffold 在app/views/posts 中生成的index.html.erb。我做了一个快速检查,现在生成了.each 语法。我猜该指南的一部分是在 Rails 开发的早期阶段编写的,当时脚手架生成了for ... in。
Edit3:我现在可以确认在 Rails 2.2.2 中使用了 for x in y,但到了 2.3.8,它正在使用 y.each do |x|。让你知道。
【问题讨论】:
标签: ruby-on-rails ruby idioms