當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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


本文簡要介紹ruby語言中 Array.array[index] 的用法。

用法

array[index] → object or nil
array[start, length] → object or nil
array[range] → object or nil
array[aseq] → object or nil
也別名為:slice

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

當給定兩個整數參數 startlength 時,返回一個大小為 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.sizelength >= 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-lang.org大神的英文原創作品 Array.array[index]。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。