在Ruby中对2个集执行独占或操作时,有没有办法确定元素来自哪个集合。
require 'set'
set_a = [1,2,3].to_set
set_b = [2,3,4].to_set
set_a ^ set_b # => returns a new set containing elements [4,1]
但我需要的是这样的事情
require 'set'
set_a = [1,2,3].to_set
set_b = [2,3,4].to_set
set_a ^ set_b # => should return something like [set_b(4), set_a(1)]
答案 0 :(得分:0)
我不这么认为。但是你可以返回一个带元素键和设置值的哈希值。
def pick_a_name( *sets )
sets.reduce(:^).each_with_object({}) do |element, hash|
hash[element] = sets.find{ |set| set.include?(element) }
end
end
答案 1 :(得分:0)
为什么这么简单?
require 'set'
set_a = [1,2,3].to_set
set_b = [2,3,4].to_set
in_a = set_a - set_b # #<Set: {1}>
in_b = set_b - set_a # #<Set: {4}>
# make any structure you like from in_a and in_b
(这不会直接回答这个问题,因为没有使用exlusive或/ ^
帽子,但我希望它仍然是okey)