亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Ruby中的“ for”與“ each”

Ruby中的“ for”與“ each”

慕虎7371278 2019-11-11 14:39:46
我只是對Ruby中的循環有一個簡單的問題。這兩種遍歷集合的方式之間有區別嗎?# way [email protected] do |item|  # do whateverend# way 2for item in @collection  # do whateverend只是想知道它們是否完全相同,或者是否存在細微的差異(可能@collection是nil時)。
查看完整描述

3 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

這是唯一的區別:


每:


irb> [1,2,3].each { |x| }

  => [1, 2, 3]

irb> x

NameError: undefined local variable or method `x' for main:Object

    from (irb):2

    from :0

對于:


irb> for x in [1,2,3]; end

  => [1, 2, 3]

irb> x

  => 3

通過for循環,迭代器變量在塊完成后仍然存在。對于each循環,它不會,除非在循環開始之前已將其定義為局部變量。


除此之外for,該each方法只是語法糖。


如果@collection是nil兩個回路拋出一個異常:


例外:main:Object的未定義局部變量或方法“ @collection”


查看完整回答
反對 回復 2019-11-11
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

你的第一個例子


@collection.each do |item|

  # do whatever

end

更慣用了。盡管Ruby支持像for和這樣的循環結構while,但通常首選使用塊語法。


另一個微妙的區別是,您在for循環內聲明的任何變量都將在循環外可用,而在迭代器塊內的變量實際上是私有的。


查看完整回答
反對 回復 2019-11-11
  • 3 回答
  • 0 關注
  • 723 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號