注射结果为零

Pie*_*rre 1 ruby

我试图积累一些值,如果它们符合条件.为什么这个片段返回nil,当我希望它返回2时?

[[1, 2], [2, 3], [3, 8], [4, 2]].inject(0) { |s, e| s + e[1] if e[0] <= 1}
Run Code Online (Sandbox Code Playgroud)

这不是inject正确的方法吗?

fl0*_*00r 6

你应该回归s;

[[1, 2], [2, 3], [3, 8], [4, 2]].inject(0) { |s, e| s += e[1] if e[0] <= 1; s}
Run Code Online (Sandbox Code Playgroud)

小清洁工

[[1, 2], [2, 3], [3, 8], [4, 2]].inject(0){|s,(k,v)| s += (k<2 ? v : 0)}
Run Code Online (Sandbox Code Playgroud)