我必须对两个对象进行异或,并认为我可以使用 Ruby 的内置异或运算符 ( ^
),但它不起作用。我想用它来测试我的一个对象是否被初始化。
a = Object.new
b = Object.new
a ^ b # => NoMethodError: undefined method `^' for #<Object:0x007...>
有趣的是,我可以做到
a = nil
b = Object.new
a ^ b # => true
我认为 Ruby 不允许您先天地异或两个对象,这很奇怪。我是否缺少另一个命令或者这个功能只是没有构建?
显然,我的问题的解决方案是执行以下操作:
(a || b) && !(a && b)