次のような Array
の変数 a
と b
があるとして、
> a = [1, 2]
=> [1, 2]
> b = [1, 3]
=> [1, 3]
積集合と和集合は、演算できるので、
> a & b # 積集合
=> [1]
> a | b # 和集合
=> [1, 2, 3]
> a - b # 差集合
=> [2]
排他的論理和を出そうとして、 TrueClass
や FalseClass
のように ^
があるのかとうっかりやってみたら、
> a ^ b
NoMethodError: undefined method `^' for [1, 2]:Array
となってしまったので、単純に次のようにしてみても良かったが、
> (a - b) + (b -a)
=> [2, 3]
Set
には ^
があるので、次のようにしてみた。
irb(main):009:0> (Set.new(a) ^ Set.new(b)).to_a
=> [3, 2]
Set
使っているので、順序は不定になるが、自分の用途には間に合った。