加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby中的“for x”是什么意思?

发布时间:2020-12-16 20:05:32 所属栏目:百科 来源:网络整理
导读:我正在学习 Ruby和RoR,我遇到了这个: % for post in @posts % 在Rails guide.我明白,在Ruby中这样做的惯用方式是: % @posts.each do |post| % 如果有差别呢,那是什么呢?如果没有差别,那么Rails的人们会推荐适当的Ruby成语(而不是对我来说更像pythonic)呢
我正在学习 Ruby和RoR,我遇到了这个:
<% for post in @posts %>

在Rails guide.我明白,在Ruby中这样做的惯用方式是:

<% @posts.each do |post| %>

如果有差别呢,那是什么呢?如果没有差别,那么Rails的人们会推荐适当的Ruby成语(而不是对我来说更像pythonic)呢?

编辑:我刚刚发现了两个冲突的解释:Tutorials Point说,除了“一个for循环不会为本地变量创建新的范围”之外,它们是一样的,而CS.Auckland.ac.NZ则表示只是相当于的语法糖. .

Edit2:相关的for …是由脚本/生成脚手架在app / views / posts中生成的index.html.erb.我做了一个快速检查,现在生成.each语法.我猜这个指南的一部分是在轨道开发的早期阶段写的,当脚手架为…生成时.

编辑3:我现在可以确认x中的x在Rails 2.2.2中使用,但是使用了2.3.8,它使用y.each do | x |.就这样你才知道

解决方法

tutorialpoint页面是正确的,等于每个除了作用域差异之外的每个页面.这是一个示范:
arr = [1,2,3]
arr.each do |x|
  last = x
end
last # NameError

arr = [1,3]
for x in arr
  last = x
end
last #=> 3

如果你想使用每个工作,你需要在循环之前做last = nil.正如链接指出的那样,因为块没有启动新的范围.

但是请注意,这很少有实际的区别,很少有人甚至意识到这一点.

当人们使用红宝石时,最常见的是因为这是他们用来从其他语言中传播的东西,而不是因为每个人之间的区别.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读