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

Swift 可以比较包含布尔值的元组。但是官方文件说没有,swift,boolean,tuples,Swift,Boolean,Tuples,基本运算符的比较运算符部分是包含布尔值的元组不能进行比较的声明的一部分 不能说真值大于或小于假值。但是您可以在布尔值上编写相等的比较 print((1, true) == (2, true)) // --> false print((1, true) == (1, true)) // --> true print((1, true) != (2, true)) // --> true 问题是文档中的错误还是我误解了内容?您误解了。比较被用来表示。在Swift中,假与真不同,但

基本运算符的比较运算符部分是包含布尔值的元组不能进行比较的声明的一部分

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

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

问题是文档中的错误还是我误解了内容?

您误解了。比较被用来表示。在Swift中,假与真不同,但不大于或小于假。默认情况下,布尔值不可比较

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

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

你误解了。比较被用来表示。在Swift中,假与真不同,但不大于或小于假。默认情况下,布尔值不可比较

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

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
比较实际上意味着检验相等性,大于和小于

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

协议Compariable继承自Equalable。一个对象实际上必须实现操作符比较实际上意味着测试相等、大于和小于

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


协议Compariable继承自Equalable。一个对象实际上必须实现操作符,感谢您的解释。很高兴知道比较是一个集合,3个发票一起比较。但这是否意味着如果其中3个可以用于2个变量,那么我们可以说这两个变量是可比的?可比需要实现一组运算符。我更新了答案。实际上你只需要实现两个:==和@CodeDifferent对,谢谢,我也会添加它。谢谢你的解释。很高兴知道比较是一个集合,3个发票一起比较。但这是否意味着如果其中3个可以用于2个变量,那么我们可以说这两个变量是可比的?可比需要实现一组运算符。我更新了答案。实际上你只需要实现两个:==和@CodeDifferent对,谢谢,我也会添加。很高兴知道你可以通过使用Bool协议上的扩展使它们具有可比性。感谢您知道,通过使用Bool协议上的扩展,您可以使它们具有可比性。谢谢