2016-05-05 6 views
-3

Rubyでは、forループは式であるため、変数に代入できる値があることを理解しています。例えばRubyのforループの戻り値

x = for i in 0..3 do 
end 

セット0..3からx - ループ反復オーバーレンジ。

forループの戻り値は常に上記の範囲ですか、またはループの本体によって異なることがありますか?

+2

[this one](http://www.tutorialspot.com/ruby/ruby_loops.htm)などの基本的なチュートリアルを試してみましたか? –

+2

Rubyは、言語を探検するための非常に良い対話型シェル( 'irb')を提供しています。なぜ自分でそれを試してみませんか? – Aetherus

+0

ボディに 'break'が含まれていると、ループの値は' nil'になります。それがループの他の可能な値ですか?私は見つける方法を知らない。この種のことはどこに文書化されていますか? – user200783

答えて

2

ループは、ループする列挙子がどのように実装されているかによって異なります。ループはforによって返されます。たとえば、独自の列挙子を実装しましょう。

chipmunks = Enumerator.new { |c| 
    c << "Alvin" 
    c << "Simon" 
    c << "Theodore" 
    "Dave" 
} 

最後に、列挙子の最後の文字列が "Dave"という文字列であることに注意してください。今度は.eachループでこれを使用しましょう。

result = chipmunk.each do |chipmunk| 
    puts chipmunk 
end 
#=> Alvin 
#=> Simon 
#=> Theodore 

puts result 
#=> Dave 

私の推測では、Rangeはその列挙子が自分自身を返すように実装されていることです。これにより、メソッドを連鎖させることができます。

(1..100).each { |n| something(n) }.each {|y| something_else(y) } 
関連する問題