1
此腳本不斷接受用戶輸入,直到他們輸入exit
,此時循環中斷。但爲什麼循環返回nil
而不是傳遞給with_object
的對象?如何修復循環以返回傳遞給`with_object`的對象?
puts "enter lines, type exit to finish"
loop.with_object([]) do |_,a|
i = gets.chomp
i == 'exit' ? break : a << i
end
#=> nil
按照official documentationEnumerator#with_object
應該返回傳遞給它的對象。
你可以改爲寫'i =='exit'? (提出StopIteration):a << i'。 [Kernel#loop](http://ruby-doc.org/core-2.3.0/Kernel.html#method-i-loop)通過跳出循環來處理異常,這是終止' loop'。出於這個原因,我比較喜歡這個,但它很小。爲了更好的可讀性,可以寫兩行:'如果我==退出,則引發StopIteration;一個<< i'。 –