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

前端之家收集整理的这篇文章主要介绍了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的/在语法.

猜你在找的Ruby相关文章