给定一个Ruby数组ary1
,我想生成另一个与ary2
具有相同元素的数组ary1
,除了给定{{1}的一组索引。
我可以使用
将此功能修补到Ruby的ary1
类
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
虽然这种方法很好,但我觉得我必须遗漏一些明显的东西。 Ruby中是否已经内置了一些这样的功能?例如,是否可以ary1 = [:a, :b, :c, :d, :e]
ary2 = ary1.reject_at(2, 4)
puts(ary2.to_s) # [:a, :b, :d]
用于此任务?
答案 0 :(得分:10)
不要认为有一个内置的解决方案。得出以下结论:
OSC:: opensc-tool.exe -s 00a40400060102030405dd -s 00c00000
Using reader with a card: ACS CCID USB Reader 0
Sending: 00 A4 04 00 06 01 02 03 04 05 DD
Received (SW1=0x90, SW2=0x00)
Sending: 00 C0 00 00
Received (SW1=0x88, SW2=0x88)
答案 1 :(得分:2)
相反,有Array#values_at
。您可以通过反转索引来选择:
class Array
def values_without(*indices)
values_at(*((0...size).to_a - indices))
end
end
[:a, :b, :c, :d, :e].values_without(2, 4)
# => [:a, :b, :d]