给定一个Ruby数组ary1
,我想生成另一个数组ary2
,它与ary1
具有相同的元素,除了那些在给定的ary1
索引处的元素。
我可以将此功能monkey-patch到Ruby的Array
类上,方法是
class Array
def reject_at(*indices)
copy = Array.new(self)
indices.uniq.sort.reverse_each do |i|
copy.delete_at i
end
return copy
end
end
我可以这样使用它:
ary1 = [:a, :b, :c, :d, :e]
ary2 = ary1.reject_at(2, 4)
puts(ary2.to_s) # [:a, :b, :d]
虽然这样做很好,但我感觉我一定遗漏了一些明显的东西。**Ruby中是否已经内置了一些类似的功能?**例如,Array#slice
可以且应该用于此任务吗?
3条答案
按热度按时间yizd12fk1#
不要认为有一个内置的解决方案。想出了以下内容:
cuxqih212#
相反,有
Array#values_at
。您可以通过反转索引来使用它以选择:eaf3rand3#
您可以使用
reject.with_index
。