我有一组元素,我想多次从中获取和删除前几个元素。有没有比这更短的方法(一个操作而不是两个):
require 'set'
s = Set[1, 2, 3, 4] # => #<Set: {1, 2, 3, 4}>
first_two = s.take(2) # => [1, 2]
s.subtract(first_two) # => #<Set: {3, 4}>
(所以基本上我想知道我是否忽略了 Sets 的 shift
)
最佳答案
您可以向 Set 类添加一个新方法 take!
(或 remove!
或任何合适的名称):
class Set
def take!(args)
taken = self.take(args)
self.subtract(taken)
return taken
end
end
a = Set[1, 2, 3, 4] # <Set: {1, 2, 3, 4}>
a.take!(2) # <Set: {1, 2}>
a # <Set: {3, 4}>
关于ruby - 在一次操作中从 Ruby Set 中获取和删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606524/