class Contracts::Builtin::Xor
Takes a variable number of contracts. The contract passes if exactly one of those contracts pass. Example: Xor[Fixnum, Float]
Public Class Methods
new(*vals)
click to toggle source
# File lib/contracts/builtin_contracts.rb, line 123 def initialize(*vals) @vals = vals end
Public Instance Methods
to_s()
click to toggle source
# File lib/contracts/builtin_contracts.rb, line 135 def to_s EnumInspector.inspect(@vals, "xor") end
valid?(val)
click to toggle source
# File lib/contracts/builtin_contracts.rb, line 127 def valid?(val) results = @vals.map do |contract| res, = Contract.valid?(val, contract) res end results.count(true) == 1 end