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

标签 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}>

(所以基本上我想知道我是否忽略了 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/

相关文章:

c++ - 遍历集合

arrays - 从 array1 读取 从 array2 写入

ruby - 为什么 `return a or b` 在 Ruby 中是空值表达式错误?

ruby - 方法名格式

arrays - 检查数组是否存在于一组数组中

C++ 排序的对象集

c++ - 如何获取集合中某个位置的整数?

ruby-on-rails - 降级 Rails 版本后项目停止工作

ruby-on-rails - 使用 zip 在 ruby​​ 中转置哈希

mysql - 在 MySql 中合并 Bit、Enum 和 Set 字段