『》』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()的参数;