Ruby:@cars.each |car| 之间的区别 对于@cars 中的汽车
(抱歉这个新手问题。)在 Ruby 中,循环:
@cars.each do |car|
和
for car in @cars do
之间有什么区别?
效率是否存在差异,或者为什么我们需要两种(或更多)方式来表达同一件事? 第二种方式对我来说似乎更优雅/自然,但我可能错过了一些关键的观察,为什么第一种方式可能是更好的选择。
(Sorry for the newbie question.) In Ruby, what is the difference between the loops:
@cars.each do |car|
and
for car in @cars do
?
is there a difference in efficiency, or why do we need two (or more) ways to express the same thing? The second way seems more elegant/natural to me, but I may be missing some crucial observation, why the first may be the better choice.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更多人使用
@cars.each
表示法,因为它可以推广到其他方法(例如#inject
、#each_with_index
、#map< /code> 等,以及非迭代器回调)。
for/in 主要只是
#each
的语法糖。 两者工作方式的主要区别在于变量作用域:for/in 随后将迭代器变量保留在作用域中,而
#each
则不然。就我个人而言,我从不使用 ruby 的 for/in 语法。
More people use the
@cars.each
notation because that generalizes to other methods (like#inject
,#each_with_index
,#map
, etc, as well as non-iterator callbacks).for/in is mainly just syntactic sugar for
#each
. The main difference in how the two work is in variable scoping:for/in leaves the iterator variable in scope afterwards, while
#each
doesn't.Personally, I never use ruby's for/in syntax.
我认为这只是语法糖。 它在功能上是等效的,并且我不知道解释器中存在任何实现差异。
注意 - 您可能会丢失第二个中的“do”。
I think it is just syntactic sugar. It is functionally equivalent, and I am not aware of any implementation difference in the interpreter.
Note - you can lose the 'do' on the second one.