[英]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.