swift - Swift 元组比较
问题描述
有人可以告诉,为什么在类似的情况下 Xcode 返回:在第一种情况下 - 真,在第二种情况下 - 假?这是一个元组比较。首先它比较整数,但是它如何比较字符串呢?
(5, "life") < (5, "lifiee")// true
(99, "life") < (99, "death")// false
提前感谢您的回答!
解决方案
最后,让我们提醒一下,为了比较元组,它们应该有:
- 相同数量的值。
- 同类型。
基于此,从左到右依次比较元组,直到发现不匹配。
在第一个示例中:
(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
}
推荐阅读
- wordpress - 带有 OR 条件的 WordPress WP QUERY
- r - R:绘制数据帧中对组合的百分比
- php - 无法获得对 .ajax() 的 cUrl 响应以进行重定向
- ui-automation - 将 pywinauto 脚本从 Windows 移植到 X11/Xlib
- openssl - Openssl:无法验证根 CA 证书颁发的客户端证书
- arrays - 串行读取循环不好
- linux - 如何从 shell 脚本中的文件中获取版本号?
- java - 检测应用程序是否已被破解/盗版
- c# - 所有表存储请求是否应该共享 CloudTable 引用
- google-chrome - IIS 问题与 Chrome