使用方法链接我想修改以下代码,以便在每次迭代时打印变量mult和n。有什么方法可以帮助实现这个目标?
(1..3).inject {|mult, n| mult * n}
答案 0 :(得分:3)
(1..3).inject { |mult, n| (mult * n).tap { |next_mult| p [n, mult, next_mult] } }
答案 1 :(得分:1)
这对我来说比tap
解决方案更简单。这可能是一个品味问题。
(1..3).inject do |mult, n|
puts "#{mult} #{n}"
mult * n
end
1 2
2 3
=> 6
要回答bodhidarma关于迭代次数的其他问题,docs说:
如果没有明确指定备忘录的初始值,则使用集合的第一个元素作为备忘录的初始值。
答案 2 :(得分:0)
像这样:
>> (1..3).inject {|mult, n| r = mult * n; p "mult = #{mult}, n = #{n}, mult * n = #{r}"; r}
"mult = 1, n = 2, mult * n = 2"
"mult = 2, n = 3, mult * n = 6"