Ruby语言经典代码讲座:类Array 方法inject

『》』Ruby语言经典代码讲座:类Array 方法inject 块过程
『《』我们的代码如下:
class Array
def injectX(n,m)
self.each do |iValue|
n = yield(n, iValue, m)
end
n
end

def sum
self.inject(0) do |n, values|
n+values
end
end

def product
m=1
inject(m) { |n, values| n*values }
end

def doubleResult x
self.injectX(0,x) do |n, value, m|
m*n+value
end
end
end

puts [ 1, 2, 3, 4, 5 ].sum # 15
puts [ 1, 2, 3, 4, 5 ].doubleResult(2) # 57
puts [ 1, 2, 3, 4, 5 ].product # 120

说明:
#方法inject的参数(0)与块过程内的变量无关;
#方法inject必须带上后面的块过程;
#在块过程内|...|的变量个数一定要和方法inject内方法yield()的参数个数相同;
#在块过程内|...|的变量顺序一定要和方法inject内方法yield()的参数顺序相同;
#在块过程内|...|后面的语句被方法inject内方法yield()调用;
#方法inject是类Array的一个方法;
#在块过程内|...|的变量可以被理解为方法inject内方法yield()的参数;

Comments

Popular posts from this blog

英语字母a的发音