Ruby 如何修复循环以返回传递给“with_object”的对象?
此脚本持续接受用户的输入,直到他们进入Ruby 如何修复循环以返回传递给“with_object”的对象?,ruby,break,Ruby,Break,此脚本持续接受用户的输入,直到他们进入退出,此时循环中断。但是,为什么循环返回nil,而不是用_object传递给的对象呢 puts "enter lines, type exit to finish" loop.with_object([]) do |_,a| i = gets.chomp i == 'exit' ? break : a << i end #=> nil 放入“输入行,键入exit以完成” loop.with_object([])do | u,a
退出
,此时循环中断。但是,为什么循环返回nil
,而不是用_object传递给的对象呢
puts "enter lines, type exit to finish"
loop.with_object([]) do |_,a|
i = gets.chomp
i == 'exit' ? break : a << i
end
#=> nil
放入“输入行,键入exit以完成”
loop.with_object([])do | u,a|
i=get.chomp
i==‘退出’?破发:零
根据枚举器,with#U object
应返回传递给它的对象。Writebreak a
可重新定义break
的返回值,默认值为nil
loop.with_object([]) do |_,a|
i = gets.chomp
i == 'exit' ? (break a) : a << i
end
#=> whatever #a is
loop.with_object([])do | u|
i=get.chomp
i==‘退出’?(打断a):a什么都可以
从某种意义上说,break
用对象的返回值覆盖,因此您必须再次手动设置它。同样适用于inject
/reduce
和next
。您可以改为编写i==“exit”?(提升停止迭代):a