vlambda博客
学习文章列表

Swift 比较运算和三目条件运算

一:比较运算

所有标准 C 中的比较运算都可以在 Swift 中使用。

等于 a == b 

不等于 a!=b 

大于 a > b

小于 a < b 

大于等于 a >= b 

小于等于 a <= b

注意: Swift 也提供恒等 === 和不恒等 !== 这两个比较符来判断两个对象是否引用同一个 对象实例。更多细节在 类与结构。

每个比较运算都返回了一个标识表达式是否成立的布尔值:

1 == 1 // true, 因为 1 等于 12 != 1 // true, 因为 2 不等于 12 > 1 // true, 因为 2 大于 11 < 2 // true, 因为 1 小于21 >= 1 // true, 因为 1 大于等于 12 <= 1 // false, 因为 2 并不小于等于 1

比较运算多用于条件语句, 如 if 条件:

let name = "world"if name == "world" { print("Hello, world")} else { print("对不起, \(name), 我不认识你!")}// 输出 "hello, world", 因为 `name` 就是等于 "world"

二:三目条件运算

三目条件运算的特殊在于它是有三个操作数的运算符, 它的原型是 问题 ? 答案1: 答案2。它简洁地表达根据 问题 成立与否作出二选一的操作. 如果 问题 成立, 返回 答案 1 的结 果; 如果不成立, 返回 答案 2 的结果。

使用三目条件运算简化了以下代码:

if question: { answer1} else { answer2}
这里有个计算表格行高的例子。如果有表头, 那行高应比内容高度要高出 50 像素; 如果没 有表头, 只需高出 20 像素。
let contentHeight = 40let hasHeader = truelet rowHeight = contentHeight + (hasHeader ? 50 : 20)// rowHeight 现在是 90

这样写会比下面的代码简洁:

let contentHeight1 = 40let hasHeader1 = truevar rowHeight1 = contentHeightif hasHeader { rowHeight1 = rowHeight1 + 50} else { rowHeight1 = rowHeight1 + 20}// rowHeight1 现在是 90
第一段代码例子使用了三目条件 运算, 所以一行代码就能让我们得到正确答案。这比第二段代码简洁得多, 无需将 rowHeight 定义成变量, 因为它的值无需在 if 语句中改变。
三目条件运算提供有效率且便捷的方式来表达二选一的选择。需要注意的事, 过度使用三目条件运算就会由简洁的代码变成难懂的 代码. 我们应避免在一个组合语句使用多个三目条件运算符。

推荐阅读