我试图迭代一个数组并有条件地增加一个计数器.我使用索引来比较其他数组的元素:
elements.each_with_index.with_object(0) do |(element, index), diff|
diff += 1 unless other[index] == element
end
Run Code Online (Sandbox Code Playgroud)
diff即使无条件地更改它,我也无法改变价值.这可以通过以下方式解决inject:
elements.each_with_index.inject(0) do |diff, (element, index)|
diff += 1 unless other[index] == element
diff
end
Run Code Online (Sandbox Code Playgroud)
但我想知道是否.each_with_index.with_object(0)是一个有效的结构,如何使用它?
来自ruby docs for each_with_object
请注意,您不能使用数字,true或false等不可变对象作为备忘录.您会认为以下内容返回120,但由于备忘录从未更改过,因此不会.
(1..5).each_with_object(1){| value,memo | 备忘录*=值}#=> 1
因此each_with_object不适用于整数等不可变对象.