Ruby:区别@ cars.each do | car |并在@cars做汽车

(对于新手问题,对不起)在 Ruby中,循环有什么区别?
@cars.each do |car|

for car in @cars do

效率有差异,还是为什么需要两种(或多种)表达方式呢?第二种方式对我来说似乎更为优雅/自然,但是我可能会缺少一些关键的观察,为什么第一个可能是更好的选择.

解决方法

更多的人使用@ cars.each符号,因为它推广到其他方法(如#inject,#each_with_index,#map等,以及非迭代器回调).

for / in主要是#each的句法糖.两个工作的主要区别在于可变范围:

irb> @cars = %w{ ford chevy honda toyota }
#=> ["ford","chevy","honda","toyota"]
irb> @cars.each { |car| puts car }
ford
chevy
honda
toyota
#=> ["ford","toyota"]
irb> car
NameError: undefined local variable or method `car` for #<Object:0x399770 @cars=["ford","toyota"]>
        from (irb):3
        from /usr/local/bin/irb:12:in `<main>`
irb> for car in @cars
     puts car.reverse
     end
drof
yvehc
adnoh
atoyot
#=> ["ford","toyota"]
irb> car
#=> "toyota"

for / in在之后的范围内离开迭代器变量,而#each没有.

就个人而言,我从来没有使用ruby的/在语法.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...