下面的部分代码汇总了数组的元素。如何打印生成的数组总和?
#!/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
答案 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}}。