【发布时间】:2011-12-01 08:02:13
【问题描述】:
Ruby 中的Set 和Array 有什么区别,除了集合保留唯一元素而数组保留重复元素之外?
【问题讨论】:
-
this link 可能会让您对这个主题有更深入的了解。
Ruby 中的Set 和Array 有什么区别,除了集合保留唯一元素而数组保留重复元素之外?
【问题讨论】:
它们非常不同。
a[3] 引用数组中的第 4 个对象。[1, 'apple', String, 1, :banana](这会创建并初始化一个新数组)。Set 不是核心的一部分,而是标准库的一部分,因此需要一个require 'set'。Set.new 创建它们。
Set[](例如 Set[1,2,3])【讨论】:
对我来说,主要区别在于Sets 是作为散列实现的,因此您可以对元素进行O(1) 成员资格测试。
【讨论】:
另一个重要的区别是include?方法的实现:Array根据==方法的结果比较成员,而Set使用eql?方法。
【讨论】:
$ ri Set.eql? 声明:“对于 Object 类的对象,eql? 是 == 的同义词。”
eql? 和 == 不是同义词。