gpt4 book ai didi

ruby-on-rails - Ruby 中的 "for x in y"有什么意义?

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:08 24 4
gpt4 key购买 nike

我目前正在学习 Ruby 和 RoR,我遇到了这个:

<% for post in @posts %>

Rails guide .我知道在 Ruby 中执行此操作的惯用方法是:

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

如果有区别那是什么?如果没有区别,那么 Rails 人员插入正确的 Ruby 习语(而不是这个,对我来说看起来更像 pythonic)不是更好吗?

编辑: 我刚刚发现了两个相互矛盾的解释:Tutorials Point说它们是相同的,除了“for 循环不会为局部变量创建新范围”,而 CS.Auckland.ac.NZfor 只是等效的 .each 的语法糖。

Edit2: 所讨论的 for ... in 是针对 app/views 中生成的 index.html.erb/posts 通过 script/generate scaffold。我做了一个快速检查,现在生成了 .each 语法。我猜这部分指南是在 Rails 开发的早期阶段编写的,当时脚手架生成了 for ... in

Edit3: 我现在可以确认 Rails 2.2.2 中使用了 for x in y,但是到了 2.3.8,它使用的是 y.each做 |x|。只是想让你知道。

最佳答案

tutorialpoint 页面是正确的,for 等同于each 除了作用域不同。这是一个演示:

arr = [1,2,3]
arr.each do |x|
last = x
end
last # NameError

对比

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

如果你想让它使用each,你需要在循环之前做last = nil。正如链接所指出的,这是因为 block 开始了一个新的范围,而 for 却没有。

但是请注意,这很少会产生实际差异,甚至很少有人意识到这一点。

当人们在 ruby​​ 中使用 for 时,最常见的原因是他们习惯于从其他语言中获取 - 而不是因为 for 之间有任何差异每个

关于ruby-on-rails - Ruby 中的 "for x in y"有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3342799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com