当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Enumerable.sum用法及代码示例


本文简要介绍ruby语言中 Enumerable.sum 的用法。

用法

sum(initial_value = 0) → number
sum(initial_value = 0) {|element| ... } → object

在没有给出块的情况下,返回 initial_value 和元素的总和:

(1..100).sum          # => 5050
(1..100).sum(1)       # => 5051
('a'..'d').sum('foo') # => "fooabcd"

通常,使用方法 +each 计算总和;对于性能优化,可能不会使用这些方法,因此对这些方法的任何重新定义在这里都可能无效。

一种这样的优化:如果可能,使用高斯求和公式 n(n+1)/2 进行计算:

100 * (100 + 1) / 2 # => 5050

给定一个块,调用每个元素的块;返回 initial_value 和块返回值的总和:

(1..4).sum {|i| i*i }                        # => 30
(1..4).sum(100) {|i| i*i }                   # => 130
h = {a: 0, b: 1, c: 2, d: 3, e: 4, f: 5}
h.sum {|key, value| value.odd? ? value : 0 } # => 9
('a'..'f').sum('x') {|c| c < 'd' ? c : '' }  # => "xabc"

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Enumerable.sum。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。