首页 文章

可以比较包含布尔值的元组 . 但官方文件没有说

提问于
浏览
1

Basic Operators Basic Operators 的一部分Official documents声称"Tuples that contain a Boolean value can't be compared"

您不能说真实值大于或小于假值 . 但是你可以在布尔值上写出相等的比较

print((1, true) == (2, true)) // --> false
print((1, true) == (1, true)) // --> true
print((1, true) != (2, true)) // --> true

Question 这是文件中的错误还是我误解了内容?

2 回答

  • 2

    比较实际上意味着测试相等,大于和小于 .

    平等是可能的,另一个不是 .

    协议 Comparable 继承自 Equatable . 对象必须实现运算符 <<=>=> (实际上只有 < 因为其他三个可以由编译器推断)以符合 Comparable 协议,除 == 之外的 == .

  • 2

    你误会了 . "Compare"曾被用来表示 <> . 在Swift中, falsetrue 不同,但不是更大或更小 . Bool默认不具有可比性 .

    当然,没有什么可以阻止你使它们具有可比性:

    extension Bool: Comparable {}
    
    // Make false < true
    public func < (lhs: Bool, rhs: Bool) -> Bool {
        return lhs == false && rhs == true
    }
    
    print( (1, false) < (2, false) ) // true
    print( (true, 1) < (false, 1) )  // false
    

相关问题