我有一个ruby数组,例如10个元素,我想要返回除第5个元素以外的所有元素。
a = *(1..10)
我希望能够做一些像
这样的事情a[0..3 + 5..9]
甚至更好的东西(借用R语法),
a[-4]
要做到这一点,但这不起作用。 (也没有做任何更聪明的事情,我试过得到一个元素索引数组)。在ruby中执行此操作的最佳方法是什么?
答案 0 :(得分:4)
您可以使用values_at
:http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-values_at
因此您可以将其用作
a.values_at(0..3, 5..9)
答案 1 :(得分:3)
不需要黑魔法:
a[0..3] + a[5..9]
答案 2 :(得分:0)
查看Array#delete_at
例如,myarray.delete_at(5)
导致数组缺少元素5(当然,从0开始计算)。
示例:
class Array
def without(n)
self.delete_at(n)
return self
end
end
arr = [1, 2, 3, 4]
p arr.without(1) #=> [1, 3, 4]
但是,正如评论者指出的那样,这会改变原始阵列,这可能不是O.P.想要的!如果这是一个问题,请按以下方式编写:
class Array
def without(n)
arr2 = Array.new(self)
arr2.delete_at(n)
return arr2
end
end
返回所需的数组(缺少原始第n个元素的数组),同时保持原始数组不变。