当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Set类用法及代码示例


本文简要介绍ruby语言中 Set类 的用法。

这个库提供了 Set 类,它处理无重复的无序值的集合。它是 Array 的直观 inter-operation 设施和 Hash 的快速查找的混合体。

为方便起见,将方法to_set 添加到 Enumerable

Set 实现无重复值的无序值集合。这是 Array 的直观 inter-operation 设施和 Hash 的快速查找的混合体。

Set 易于与 Enumerable 对象一起使用(实现 each )。除了集合和数组之外,大多数初始化方法和二元运算符都接受通用 Enumerable 对象。可以使用to_set 方法将 Enumerable 对象转换为 Set

Set 使用 Hash 作为存储,所以必须注意以下几点:

  • 元素的相等性根据 Object#eql? Object#hash 确定。使用 Set#compare_by_identity 使集合按其身份比较其元素。

  • Set 假设每个元素的标识在存储时不会改变。修改集合中的元素会使集合处于不可靠状态。

  • 当要存储字符串时,将存储该字符串的冻结副本,除非原始字符串已被冻结。

比较

比较运算符 <><=>= 被实现为 {proper_,}{subset?,superset?} 方法的简写。 <=> 运算符反映了这个顺序,或者为都具有不同元素的集合返回 nil(例如 {x, y}{x, z})。

示例

require 'set'
s1 = Set[1, 2]                        #=> #<Set: {1, 2}>
s2 = [1, 2].to_set                    #=> #<Set: {1, 2}>
s1 == s2                              #=> true
s1.add("foo")                         #=> #<Set: {1, 2, "foo"}>
s1.merge([2, 6])                      #=> #<Set: {1, 2, "foo", 6}>
s1.subset?(s2)                        #=> false
s2.subset?(s1)                        #=> true

接触

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Set类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。