布尔和内联条件
一个处理布尔值的干净方法是使用内联条件 a?b:c 三元运算符,是 Swift 基本运算的一部分 。
内联条件由 3 个组件组成:
question ? answerIfTrue : answerIfFalse
其中 question 是一个被计算的布尔值,如果问题为真,则 answerIfTrue 是返回的值,如果问题为 false,则 answerIfFalse 是返回的值。
上面的表达式与:
if question {
answerIfTrue
} else {
answerIfFalse
}
使用内联条件,你将返回基于布尔值的值:
func isTurtle(_ value: Bool) {
let color = value ? "green" : "red"
print("The animal is \(color)")
}
isTurtle(true) // outputs 'The animal is green'
isTurtle(false) // outputs 'The animal is red'
你还可以基于布尔值调用方法:
func actionDark() {
print("Welcome to the dark side")
}
func actionJedi() {
print("Welcome to the Jedi order")
}
func welcome(_ isJedi: Bool) {
isJedi ? actionJedi() : actionDark()
}
welcome(true) // outputs 'Welcome to the Jedi order'
welcome(false) // outputs 'Welcome to the dark side'
内联条件允许干净的单行布尔评估