本文简要介绍ruby语言中 Array.slice
的用法。
用法
slice(index) → object or nil
slice(start, length) → object or nil
slice(range) → object or nil
slice(aseq) → object or nil
从 self
返回元素;不修改 self
。
当给定单个整数参数 index
时,返回偏移量 index
处的元素:
a = [:foo, 'bar', 2]
a[0] # => :foo
a[2] # => 2
a # => [:foo, "bar", 2]
如果 index
为负数,则相对于 self
的末尾计数:
a = [:foo, 'bar', 2]
a[-1] # => 2
a[-2] # => "bar"
如果 index
超出范围,则返回 nil
。
当给定两个整数参数 start
和 length
时,返回一个大小为 length
的新数组,其中包含从偏移量 start
开始的连续元素:
a = [:foo, 'bar', 2]
a[0, 2] # => [:foo, "bar"]
a[1, 2] # => ["bar", 2]
如果 start + length
大于 self.length
,则返回从偏移量 start
到末尾的所有元素:
a = [:foo, 'bar', 2]
a[0, 4] # => [:foo, "bar", 2]
a[1, 3] # => ["bar", 2]
a[2, 2] # => [2]
如果 start == self.size
和 length >= 0
,返回一个新的空数组。
如果 length
为负数,则返回 nil
。
当给出单个 Range 参数 range
时,将 range.min
视为上面的 start
,将 range.size
视为上面的 length
:
a = [:foo, 'bar', 2]
a[0..1] # => [:foo, "bar"]
a[1..2] # => ["bar", 2]
特殊情况:如果 range.start == a.size
,则返回一个新的空数组。
如果range.end
为负数,则从末尾计算结束索引:
a = [:foo, 'bar', 2]
a[0..-1] # => [:foo, "bar", 2]
a[0..-2] # => [:foo, "bar"]
a[0..-3] # => [:foo]
如果range.start
为负数,则从末尾计算起始索引:
a = [:foo, 'bar', 2]
a[-1..2] # => [2]
a[-2..2] # => ["bar", 2]
a[-3..2] # => [:foo, "bar", 2]
如果 range.start
大于数组大小,则返回 nil
。
a = [:foo, 'bar', 2]
a[4..1] # => nil
a[4..0] # => nil
a[4..-1] # => nil
当给定单个 Enumerator::ArithmeticSequence
参数 aseq
时,返回与序列生成的索引相对应的元素的 Array
。
a = ['--', 'data1', '--', 'data2', '--', 'data3']
a[(1..).step(2)] # => ["data1", "data2", "data3"]
与范围切片不同,如果算术序列的开始或结束大于数组大小,则抛出 RangeError
。
a = ['--', 'data1', '--', 'data2', '--', 'data3']
a[(1..11).step(2)]
# RangeError (((1..11).step(2)) out of range)
a[(7..).step(2)]
# RangeError (((7..).step(2)) out of range)
如果给定一个参数,并且其类型不是列出的类型之一,则尝试将其转换为 Integer
,如果不可能,则引发:
a = [:foo, 'bar', 2]
# Raises TypeError (no implicit conversion of Symbol into Integer):
a[:foo]
Array#slice
是 Array#[]
的别名。
相关用法
- Ruby Array.slice!用法及代码示例
- Ruby Array.slice()用法及代码示例
- Ruby Array.sort用法及代码示例
- Ruby Array.shuffle!用法及代码示例
- Ruby Array.sort_by用法及代码示例
- Ruby Array.sample()用法及代码示例
- Ruby Array.select!用法及代码示例
- Ruby Array.sort_by!用法及代码示例
- Ruby Array.sort!用法及代码示例
- Ruby Array.sum用法及代码示例
- Ruby Array.shift用法及代码示例
- Ruby Array.sample用法及代码示例
- Ruby Array.shuffle用法及代码示例
- Ruby Array.select用法及代码示例
- 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.flatten!用法及代码示例
- Ruby Array.reject用法及代码示例
- Ruby Array.repeated_permutation()用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Array.slice。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。