本文简要介绍ruby语言中 Array.fill
的用法。
用法
fill(obj) → self
fill(obj, start) → self
fill(obj, start, length) → self
fill(obj, range) → self
fill {|index| ... } → self
fill(start) {|index| ... } → self
fill(start, length) {|index| ... } → self
fill(range) {|index| ... } → self
用指定的对象替换self
中的指定元素;返回 self
。
使用参数 obj
并且没有给出块,用那个对象替换所有元素:
a = ['a', 'b', 'c', 'd']
a # => ["a", "b", "c", "d"]
a.fill(:X) # => [:X, :X, :X, :X]
使用参数 obj
和整数 start
,并且没有给出块,根据给定的开始替换元素。
如果 start
在范围内 (0 <= start < array.size
),则替换从偏移量 start
到末尾的所有元素:
a = ['a', 'b', 'c', 'd']
a.fill(:X, 2) # => ["a", "b", :X, :X]
如果 start
太大( start >= array.size
),什么也不做:
a = ['a', 'b', 'c', 'd']
a.fill(:X, 4) # => ["a", "b", "c", "d"]
a = ['a', 'b', 'c', 'd']
a.fill(:X, 5) # => ["a", "b", "c", "d"]
如果 start
为负数,则从末尾开始计数(起始索引为 start + array.size
):
a = ['a', 'b', 'c', 'd']
a.fill(:X, -2) # => ["a", "b", :X, :X]
如果 start
太小(小于且远离零),则替换所有元素:
a = ['a', 'b', 'c', 'd']
a.fill(:X, -6) # => [:X, :X, :X, :X]
a = ['a', 'b', 'c', 'd']
a.fill(:X, -50) # => [:X, :X, :X, :X]
使用参数 obj
、 Integer start
和 Integer length
,并且没有给出块,根据给定的 start
和 length
替换元素。
如果 start
在范围内,则替换从偏移量 start
开始的 length
元素:
a = ['a', 'b', 'c', 'd']
a.fill(:X, 1, 1) # => ["a", :X, "c", "d"]
如果 start
为负数,则从末尾开始计数:
a = ['a', 'b', 'c', 'd']
a.fill(:X, -2, 1) # => ["a", "b", :X, "d"]
如果 start
很大 ( start >= array.size
),则使用 nil
扩展 self
:
a = ['a', 'b', 'c', 'd']
a.fill(:X, 5, 0) # => ["a", "b", "c", "d", nil]
a = ['a', 'b', 'c', 'd']
a.fill(:X, 5, 2) # => ["a", "b", "c", "d", nil, :X, :X]
如果 length
为零或负数,则不替换任何元素:
a = ['a', 'b', 'c', 'd']
a.fill(:X, 1, 0) # => ["a", "b", "c", "d"]
a.fill(:X, 1, -1) # => ["a", "b", "c", "d"]
使用参数 obj
和 Range range
,并且没有给出块,根据给定的范围替换元素。
如果范围为正且递增 (0 < range.begin <= range.end
),则将元素从 range.begin
替换为 range.end
:
a = ['a', 'b', 'c', 'd']
a.fill(:X, (1..1)) # => ["a", :X, "c", "d"]
如果 range.first
为负数,则不替换任何元素:
a = ['a', 'b', 'c', 'd']
a.fill(:X, (-1..1)) # => ["a", "b", "c", "d"]
如果 range.last
为负数,则从末尾开始计数:
a = ['a', 'b', 'c', 'd']
a.fill(:X, (0..-2)) # => [:X, :X, :X, "d"]
a = ['a', 'b', 'c', 'd']
a.fill(:X, (1..-2)) # => ["a", :X, :X, "d"]
如果 range.last
和 range.last
都是负数,则都从数组末尾开始计数:
a = ['a', 'b', 'c', 'd']
a.fill(:X, (-1..-1)) # => ["a", "b", "c", :X]
a = ['a', 'b', 'c', 'd']
a.fill(:X, (-2..-2)) # => ["a", "b", :X, "d"]
在没有参数和给定块的情况下,使用每个索引调用块;用块的返回值替换相应的元素:
a = ['a', 'b', 'c', 'd']
a.fill { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
使用参数start
和给定的块,调用具有从偏移量start
到末尾的每个索引的块;用块的返回值替换相应的元素:
如果开始在范围内(0 <= start < array.size
),则从偏移量 start
替换到结束:
a = ['a', 'b', 'c', 'd']
a.fill(1) { |index| "new_#{index}" } # => ["a", "new_1", "new_2", "new_3"]
如果start
太大(start >= array.size
),什么也不做:
a = ['a', 'b', 'c', 'd']
a.fill(4) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
a = ['a', 'b', 'c', 'd']
a.fill(4) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
如果 start
为负数,则从末尾开始计数:
a = ['a', 'b', 'c', 'd']
a.fill(-2) { |index| "new_#{index}" } # => ["a", "b", "new_2", "new_3"]
如果 start 太小( start <= -array.size
,替换所有元素:
a = ['a', 'b', 'c', 'd']
a.fill(-6) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
a = ['a', 'b', 'c', 'd']
a.fill(-50) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "new_3"]
使用参数 start
和 length
以及给定的块,为开始长度指定的每个索引调用块;用块的返回值替换相应的元素。
如果 start
在范围内,则替换从偏移量 start
开始的 length
元素:
a = ['a', 'b', 'c', 'd']
a.fill(1, 1) { |index| "new_#{index}" } # => ["a", "new_1", "c", "d"]
如果 start 为负数,则从末尾开始计数:
a = ['a', 'b', 'c', 'd']
a.fill(-2, 1) { |index| "new_#{index}" } # => ["a", "b", "new_2", "d"]
如果 start
很大 ( start >= array.size
),则使用 nil
扩展 self
:
a = ['a', 'b', 'c', 'd']
a.fill(5, 0) { |index| "new_#{index}" } # => ["a", "b", "c", "d", nil]
a = ['a', 'b', 'c', 'd']
a.fill(5, 2) { |index| "new_#{index}" } # => ["a", "b", "c", "d", nil, "new_5", "new_6"]
如果 length
为零或更小,则不替换任何元素:
a = ['a', 'b', 'c', 'd']
a.fill(1, 0) { |index| "new_#{index}" } # => ["a", "b", "c", "d"]
a.fill(1, -1) { |index| "new_#{index}" } # => ["a", "b", "c", "d"]
使用参数 obj
和 range
以及给定的块,调用具有给定范围内的每个索引的块;用块的返回值替换相应的元素。
如果范围为正且递增( range 0 < range.begin <= range.end
,则将元素从 range.begin
替换为 range.end
:
a = ['a', 'b', 'c', 'd']
a.fill(1..1) { |index| "new_#{index}" } # => ["a", "new_1", "c", "d"]
如果 range.first
为负数,则不执行任何操作:
a = ['a', 'b', 'c', 'd']
a.fill(-1..1) { |index| fail 'Cannot happen' } # => ["a", "b", "c", "d"]
如果 range.last
为负数,则从末尾开始计数:
a = ['a', 'b', 'c', 'd']
a.fill(0..-2) { |index| "new_#{index}" } # => ["new_0", "new_1", "new_2", "d"]
a = ['a', 'b', 'c', 'd']
a.fill(1..-2) { |index| "new_#{index}" } # => ["a", "new_1", "new_2", "d"]
如果 range.first
和 range.last
都是负数,则都从末尾开始计数:
a = ['a', 'b', 'c', 'd']
a.fill(-1..-1) { |index| "new_#{index}" } # => ["a", "b", "c", "new_3"]
a = ['a', 'b', 'c', 'd']
a.fill(-2..-2) { |index| "new_#{index}" } # => ["a", "b", "new_2", "d"]
相关用法
- Ruby Array.filter!用法及代码示例
- Ruby Array.filter用法及代码示例
- Ruby Array.find_index用法及代码示例
- Ruby Array.first用法及代码示例
- Ruby Array.flatten!用法及代码示例
- Ruby Array.fetch用法及代码示例
- Ruby Array.flatten用法及代码示例
- Ruby Array.push用法及代码示例
- Ruby Array.hash用法及代码示例
- Ruby Array.to_a用法及代码示例
- Ruby Array.to_h用法及代码示例
- Ruby Array.to_s用法及代码示例
- Ruby Array.array + other_array用法及代码示例
- Ruby Array.take()用法及代码示例
- Ruby Array.reject!用法及代码示例
- Ruby Array.reject用法及代码示例
- Ruby Array.repeated_permutation()用法及代码示例
- Ruby Array.index()用法及代码示例
- Ruby Array.pack()用法及代码示例
- Ruby Array.rassoc(obj)用法及代码示例
- Ruby Array.values_at()用法及代码示例
- Ruby Array.each用法及代码示例
- Ruby Array.sort用法及代码示例
- Ruby Array.unshift()用法及代码示例
- Ruby Array.reverse用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Array.fill。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。