2016-05-05 154 views
-3

我知道在Ruby中,for循環是一個表達式,因此它有一個可以賦給變量的值。例如Ruby中for循環的返回值

x = for i in 0..3 do 
end 

x0..3 - 的範圍在其上循環迭代。

for循環的返回值是否總是上面的範圍,或者它可以根據循環的主體而不同?

+2

您是否試過以下任何基本教程,例如[this](http://www.tutorialspoint.com/ruby/ruby_loops.htm),並且只是看到您得到了什麼? –

+2

Ruby提供了一個非常好的交互式shell('irb')來讓你探索語言。爲什麼不自己嘗試一下? – Aetherus

+0

看來,如果body包含一個'break',循環的值是'nil'。這是循環的唯一其他可能值嗎?我不知道如何找出答案。這種事情記錄在任何地方嗎? – user200783

回答

2

for循環返回的內容取決於您正在循環的枚舉器的實現方式。例如,我們來實現我們自己的枚舉器。

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

請注意,Enumerator中的最後一項是字符串「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) }