14 lines
320 B
Ruby
14 lines
320 B
Ruby
class Array
|
|
def sum(init=0, &blk)
|
|
if blk
|
|
inject(init){|s, n| s + blk.call(n)}
|
|
else
|
|
inject(init){|s, n| s + n}
|
|
end
|
|
end
|
|
end
|
|
|
|
ary = [1,2,3,4,5]
|
|
p ary.sum #=> 15
|
|
p ary.sum(''){|n| (-n).to_s} #=> "-1-2-3-4-5"
|
|
p (ary.sum do |n| n * n end) #=> 55
|