微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的/在语法.

原文地址:https://www.jb51.cc/ruby/271769.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐