如果我有一個數組a = [1,2,3,4,5,6,7,8,9,10]
,我想要這個數組的子集 - 第1,第5和第7個元素。是否有可能以簡單的方式從這個數組中提取這些數據。我在想這樣的事:如何從數組中提取特定元素?
a[0,4,6] = [1,5,7]
但這並不起作用。
還有一種方法可以返回除指定的所有索引?例如,像
a[-0,-4,-6] = [2,3,4,6,8,9,10]
如果我有一個數組a = [1,2,3,4,5,6,7,8,9,10]
,我想要這個數組的子集 - 第1,第5和第7個元素。是否有可能以簡單的方式從這個數組中提取這些數據。我在想這樣的事:如何從數組中提取特定元素?
a[0,4,6] = [1,5,7]
但這並不起作用。
還有一種方法可以返回除指定的所有索引?例如,像
a[-0,-4,-6] = [2,3,4,6,8,9,10]
這裏有一種方法:
[0,4,6].map{|i| a[i]}
你可以簡單地做:
[1] pry(main)> [1,2,3,4,5,6,7,8,9,10].values_at(0, 4, 6)
=> [1, 5, 7]
在Ruby中,Array對象有一個方法/操作員[]
它允許您獲取/引用特定索引處的對象或範圍指定的連續對象子集。
ary[index] → obj or nil
ary[start, length] → new_ary or nil
ary[range] → new_ary or nil
就我個人而言,我喜歡你的語法。這很有用,但它不是由標準的Array對象提供的。直到Ruby採用你的語法,正如其他人所建議的那樣,你有values_at
方法來完成你所需要的。
values_at(selector,...) → new_ary
如果a = [1,2,3,4,5,6,7,8,9,10]
,則:
a.values_at(0, 4, 6)
=> [1, 5, 7]
a = [1,2,3,4,5,6,7,8,9,10]
對於[0,4,6] = [1,5,7]:
a.values_at(0, 4, 6)
=> [1, 5, 7]
對於[ -0,-4,-6] = [2,3,4,6,8,9,10]:
a - a.values_at(0, 4, 6)
=> [2, 3, 4, 6, 8, 9, 10]
使用Pry +1 – horseyguy