在一次操作中从Ruby Set中获取和删除元素

Con*_*ion 4 ruby set

我有一组元素,我想从中删除前几个元素.是否有一个更短的方式(所以一个操作而不是两个)这样做:

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}>
Run Code Online (Sandbox Code Playgroud)

(所以基本上我想知道我是否忽略了shift套装)

Con*_*hen 5

您可以向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}>
Run Code Online (Sandbox Code Playgroud)


Mar*_*une 3

使用内置方法没有更短的方法。

有一个开放的功能请求,要求提供一种返回和删除一个元素的方法;您可能想帮助完善 API?