我们可以找到Ruby方法的定义:Array#fill
前三种形式将self的选中元素(可能是整个数组)设置为obj。nil 的开始等于零。nil 的长度等价于 self.length。最后三个表格用块的值填充数组。该块被传递每个要填充的元素的绝对索引。从数组末尾开始计数的负值。
前三种形式做某事是什么意思?这些表格是什么?
这是(几乎)官方文件的非官方且不完整的副本,其中有更完整的描述:
fill(obj) → ary
fill(obj, start [, length]) → ary
fill(obj, range ) → ary
fill {|index| block } → ary
fill(start [, length] ) {|index| block } → ary
fill(range) {|index| block } → ary
前三种形式将self的选中元素(可能是整个数组)设置为obj。nil 的开始等于零。nil 的长度等价于 self.length。最后三个表格用块的值填充数组。该块被传递每个要填充的元素的绝对索引。从数组末尾开始计数的负值。
所以“前三种形式”指的是:
fill(obj) → ary
fill(obj, start [, length]) → ary
fill(obj, range ) → ary
顺便说一句,v1_9_3_392 太旧了。为什么不使用更新版本的 Ruby?
以下是文档中的三个使用示例:
a.fill("x") #=> ["x", "x", "x", "x"]
a.fill("z", 2, 2) #=> ["x", "x", "z", "z"]
a.fill("y", 0..1) #=> ["y", "y", "z", "z"]
此方法的行为与以下两个示例不同的地方,其中给出了块:
a.fill {|i| i*i} #=> [0, 1, 4, 9]
a.fill(-2) {|i| i*i*i} #=> [0, 1, 8, 27]