В конце концов, давайте напомним, что для сравнения кортежей они должны иметь:
- Такое же количество значений.
- Те же типы.
Исходя из этого, кортежи сравниваются слева направо до тех пор, пока не будет найдено несоответствие.
В первом примере:
(5, "life") < (5, "lifiee")
5 и 5 равны, поэтому мы переходим к следующим двум ценности для сравнения: «жизнь» и «жизнь»; Следовательно:
"life" < "lifiee"
равно true
, что означает, что конечный результат равен true
.
Во втором примере:
(99, "life") < (99, "death")
99 и 99 равно, поэтому мы переходим к следующим двум значениям для сравнения: «жизнь» и «смерть»; Поэтому:
"life" < "death"
равно 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
}