gpt4 book ai didi

ruby - 我可以在 Ruby 中合并两个 Set 对象吗?

转载 作者:数据小太阳 更新时间:2023-10-29 06:48:47 25 4
gpt4 key购买 nike

我了解 Set class和 Hash 类一样有 m​​erge 方法。然而,Set#merge documentation说:

Merges the elements of the given enumerable object to the set and returns self.

似乎合并只能发生在 Set 和另一个非 Set 对象之间。是这样吗,或者我可以按如下方式合并两个集合吗?

set1.merge(set2)

最佳答案

为什么这个问题有用

虽然 OP 因缺乏研究工作而受到批评,但应该指出 Set#merge 的 Ruby 文档对新的 Rubyists 不友好。从 Ruby 2.3.0 开始,它说:

Merges the elements of the given enumerable object to the set and returns self.

它提供 merge(enum) 作为签名,但没有有用的示例。如果你需要知道哪些类混合在Enumerable ,可能很难从一份文档中理解可以合并什么样的鸭子类型的鸭子。例如,set.merge {foo: 'bar'}.to_enum 将引发SyntaxError 尽管它可枚举的:

{foo: 'bar'}.to_enum.class
#=> Enumerator

{foo: 'bar'}.to_enum.class.include? Enumerable
#=> true

合并集

如果您正在考虑 Set#merge作为创建集合并集,那么是的:您可以合并集合。请考虑以下事项:

require 'set'

set1 = Set.new [1, 2, 3]
#=> #<Set: {1, 2, 3}>

set2 = Set.new [3, 4, 5]
#=> #<Set: {3, 4, 5}>

set1.merge set2
#=> #<Set: {1, 2, 3, 4, 5}>

像数组一样合并其他可枚举对象

但是,您也可以合并其他Enumerable对象(如数组)到一个集合中。例如:

set = Set.new [1, 2, 3]
#=> #<Set: {1, 2, 3}>

set.merge [3, 4, 5]
#=> #<Set: {1, 2, 3, 4, 5}>

改用数组联合

当然,您可能根本不需要套装。比较和对比 Set 到数组联合 (Array#|)。如果不需要 Set 类的实际功能,通常可以直接用数组做类似的事情。例如:

([1, 2, 3, 4] | [3, 4, 5, 6]).uniq
#=> [1, 2, 3, 4, 5, 6]

关于ruby - 我可以在 Ruby 中合并两个 Set 对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35304640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com