首页 > 解决方案 > Swift 元组比较

问题描述

有人可以告诉,为什么在类似的情况下 Xcode 返回:在第一种情况下 - 真,在第二种情况下 - 假?这是一个元组比较。首先它比较整数,但是它如何比较字符串呢?

(5, "life") < (5, "lifiee")// true

(99, "life") < (99, "death")// false

提前感谢您的回答!

标签: swifttuplescomparison

解决方案


最后,让我们提醒一下,为了比较元组,它们应该有:

  • 相同数量的值。
  • 同类型。

基于此,从左到右依次比较元组,直到发现不匹配。

在第一个示例中:

(5, "life") < (5, "lifiee")

5 和 5 相等,所以我们跳到接下来的两个值进行比较,分别是“life”和“lifiee”;所以:

"life" < "lifiee"

is true,表示最终结果是true

在第二个例子中:

(99, "life") < (99, "death")

99 和 99 是相等的,所以我们跳到接下来的两个值来比较,分别是“生”和“死”;所以:

"life" < "death"

is false,表示最终结果是false


为了更深入地了解比较是如何完成的,您可以查看元组比较运算符提案:

@warn_unused_result
public func < <A: Comparable, B: Comparable, C: Comparable>(lhs: (A,B,C), rhs: (A,B,C)) -> Bool {
  if lhs.0 != rhs.0 { return lhs.0 < rhs.0 }
  if lhs.1 != rhs.1 { return lhs.1 < rhs.1 }
  return lhs.2 < rhs.2
}

推荐阅读