如何将循环修复到 return 传递给 `with_object` 的对象?
How can I fix the loop to return the object passed to `with_object`?
此脚本不断获取用户的输入,直到他们输入 exit
,此时循环中断。但是为什么循环 return nil
而不是传递给 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 documentation Enumerator#with_object
应该return把对象传给它。
写入break a
重新定义break
的return值,默认为nil
.
loop.with_object([]) do |_,a|
i = gets.chomp
i == 'exit' ? (break a) : a << i
end
#=> whatever #a is
在某种意义上 break
覆盖了 with_object
的 return 值,因此您必须再次手动将其设置回来。
此脚本不断获取用户的输入,直到他们输入 exit
,此时循环中断。但是为什么循环 return nil
而不是传递给 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 documentation Enumerator#with_object
应该return把对象传给它。
写入break a
重新定义break
的return值,默认为nil
.
loop.with_object([]) do |_,a|
i = gets.chomp
i == 'exit' ? (break a) : a << i
end
#=> whatever #a is
在某种意义上 break
覆盖了 with_object
的 return 值,因此您必须再次手动将其设置回来。