Ruby - 在数组上打印sum的打印结果

时间:2015-11-29 22:11:01

标签: arrays ruby sum

下面的部分代码汇总了数组的元素。如何打印生成的数组总和?

#!/usr/bin/ruby

a = [ 1, 2, 3, 4]
b = a.map { |x| x*x }
c = a.select { |x| x%2== 0 }

puts a.inject do | sum,x |
    sum + x
end


puts a.inspect
puts b.inspect
puts c.inspect

1 个答案:

答案 0 :(得分:2)

可以通过将整个a块包装在括号中来打印inject的总和,使得结果输出为puts的参数:

a = [1, 2, 3, 4]

puts (
  a.inject do |sum, x|
    sum + x
  end
)

# => 10

通过将数组的总和分配给更具描述性的变量,和/或使用较短的注入语法进行求和,可以稍微清除上述内容。您的代码可能看起来像这样:

a = [1, 2, 3, 4]
b = a.map { |x| x * x }
c = a.select { |x| x % 2 == 0 }

sum_a = a.inject(:+)

puts a.inspect
puts b.inspect
puts c.inspect
puts sum_a

# => [1, 2, 3, 4]
# => [1, 4, 9, 16]
# => [2, 4]
# => 10

希望它有所帮助!

<强>更新

正如Cary在下面的评论中指出的那样,其他改进包括缩小c变量分配以使用a.select(&:even?)过滤掉可被2整除的整数,并使用p [variable]代替{{ 1}}。