当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Array.array[index] =用法及代码示例


本文简要介绍ruby语言中 Array.array[index] = 的用法。

用法

array[index] = object → object
array[start, length] = object → object
array[range] = object → object

分配 self 中的元素;返回给定的 object

当给定整数参数 index 时,将 object 分配给 self 中的元素。

如果 index 为非负数,则将 object 分配给偏移量 index 的元素:

a = [:foo, 'bar', 2]
a[0] = 'foo' # => "foo"
a # => ["foo", "bar", 2]

如果 index 大于 self.length ,则扩展数组:

a = [:foo, 'bar', 2]
a[7] = 'foo' # => "foo"
a # => [:foo, "bar", 2, nil, nil, nil, nil, "foo"]

如果index 为负数,则从数组末尾倒数:

a = [:foo, 'bar', 2]
a[-1] = 'two' # => "two"
a # => [:foo, "bar", "two"]

当给定整数参数 startlengthobject 不是数组时,删除从偏移量 start 开始的 length - 1 元素,并在偏移量 start 处分配 object

a = [:foo, 'bar', 2]
a[0, 2] = 'foo' # => "foo"
a # => ["foo", 2]

如果start 为负数,则从数组末尾倒数:

a = [:foo, 'bar', 2]
a[-2, 2] = 'foo' # => "foo"
a # => [:foo, "foo"]

如果 start 是非负数且在数组之外 ( >= self.size ),则使用 nil 扩展数组,在偏移量 start 处分配 object 并忽略 length

a = [:foo, 'bar', 2]
a[6, 50] = 'foo' # => "foo"
a # => [:foo, "bar", 2, nil, nil, nil, "foo"]

如果 length 为零,则在偏移量 start 及其后移动元素,并在偏移量 start 处分配 object

a = [:foo, 'bar', 2]
a[1, 0] = 'foo' # => "foo"
a # => [:foo, "foo", "bar", 2]

如果length 对于现有数组来说太大,则不扩展数组:

a = [:foo, 'bar', 2]
a[1, 5] = 'foo' # => "foo"
a # => [:foo, "foo"]

当 Range 参数 range 给出且 object 是一个数组时,删除从偏移量 start 开始的 length - 1 元素,并在偏移量 start 处分配 object

a = [:foo, 'bar', 2]
a[0..1] = 'foo' # => "foo"
a # => ["foo", 2]

如果 range.begin 为负数,则从数组末尾倒数:

a = [:foo, 'bar', 2]
a[-2..2] = 'foo' # => "foo"
a # => [:foo, "foo"]

如果数组长度小于 range.begin ,则在偏移量 range.begin 处分配 object ,并忽略 length

a = [:foo, 'bar', 2]
a[6..50] = 'foo' # => "foo"
a # => [:foo, "bar", 2, nil, nil, nil, "foo"]

如果 range.end 为零,则在偏移量 start 及其后移动元素,并在偏移量 start 处分配 object

a = [:foo, 'bar', 2]
a[1..0] = 'foo' # => "foo"
a # => [:foo, "foo", "bar", 2]

如果 range.end 为负数,则在偏移量 start 处分配 object ,保留其后的 range.end.abs -1 元素,并删除超出的元素:

a = [:foo, 'bar', 2]
a[1..-1] = 'foo' # => "foo"
a # => [:foo, "foo"]
a = [:foo, 'bar', 2]
a[1..-2] = 'foo' # => "foo"
a # => [:foo, "foo", 2]
a = [:foo, 'bar', 2]
a[1..-3] = 'foo' # => "foo"
a # => [:foo, "foo", "bar", 2]
a = [:foo, 'bar', 2]

如果 range.end 对于现有数组来说太大,则替换数组元素,但不使用 nil 值扩展数组:

a = [:foo, 'bar', 2]
a[1..5] = 'foo' # => "foo"
a # => [:foo, "foo"]

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Array.array[index] =。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。