簡體   English   中英

Ruby:@ cars.each do | car |之間的區別 在@cars做車

[英]Ruby: difference between @cars.each do |car| and for car in @cars do

(抱歉新手問題。)在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", "chevy", "honda", "toyota"]
irb> car
NameError: undefined local variable or method `car` for #<Object:0x399770 @cars=["ford", "chevy", "honda", "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", "chevy", "honda", "toyota"]
irb> car
#=> "toyota"

for / in之后將iterator變量放在范圍內,而#each則不然。

就個人而言,我從不在語法中使用ruby。

我認為這只是語法糖。 它在功能上是等價的,我不知道解釋器中的任何實現差異。

注意 - 你可以在第二個上丟失'do'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM