返回我有一個類Test
:返回從一個塊的值,而不脫離方法
class Test
attr_accessor :data
def initialize
@data = [0, 1, 2, 3]
end
def map
@data.map!{|i| i = yield i }
end
end
和我嘗試使用它喜歡:
a = Test.new
a.map{|i|
if(i==2)
i+=1
break i #<--- -This line is the focus
else
1
end
}
puts a.data
我期望的輸出是[1, 1, 3, 3]
。相反,我得到[1, 1, 2, 3]
。 map
中塊的最後一次迭代不會返回修改後的i
。
我將break i
替換爲next i
。這按我的預期執行,並生成輸出[1, 1, 3, 1]
。
我該如何修改這段代碼(或者,理想情況下,我在第二個代碼片段中指出的那一行),以便得到輸出[1, 1, 3, 3]
?換句話說,我該如何完成塊完成,但將最後一個值傳回map
?有沒有一個簡潔可讀的方法來做到這一點(另外,例如,切換布爾標誌break_now
)?
我認爲他詢問如何同時利用當前值的,而不是在本例中提到的具體數值離開塊。 –