如果我有一个数组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 :(得分:21)
您可以这样做:
[1] pry(main)> [1,2,3,4,5,6,7,8,9,10].values_at(0, 4, 6)
=> [1, 5, 7]
答案 1 :(得分:10)
这是一种方式:
[0,4,6].map{|i| a[i]}
答案 2 :(得分:1)
在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]