本文簡要介紹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 Enumerable.slice_before用法及代碼示例
- Ruby Enumerable.sort用法及代碼示例
- Ruby Enumerable.sort_by用法及代碼示例
- Ruby Enumerable.slice_after用法及代碼示例
- Ruby Enumerable.slice_when用法及代碼示例
- Ruby Enumerable.select用法及代碼示例
- Ruby Enumerable.any?用法及代碼示例
- Ruby Enumerable.uniq用法及代碼示例
- Ruby Enumerable.find_all用法及代碼示例
- Ruby Enumerable.max用法及代碼示例
- Ruby Enumerable.map用法及代碼示例
- Ruby Enumerable.min_by用法及代碼示例
- Ruby Enumerable.find_index用法及代碼示例
- Ruby Enumerable.minmax用法及代碼示例
- Ruby Enumerable.drop用法及代碼示例
- Ruby Enumerable.member?用法及代碼示例
- Ruby Enumerable.each_cons用法及代碼示例
- Ruby Enumerable.entries用法及代碼示例
- Ruby Enumerable.flat_map用法及代碼示例
- Ruby Enumerable.reject用法及代碼示例
- Ruby Enumerable.each_with_index用法及代碼示例
- Ruby Enumerable.filter_map用法及代碼示例
- Ruby Enumerable.all?用法及代碼示例
- Ruby Enumerable.take用法及代碼示例
- Ruby Enumerable.reduce用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Enumerable.sum。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。