Swift可选的绑定和“ where”子句
示例
必须先拆开可选选项,然后才能在大多数表达式中使用它们。iflet是一个可选绑定,如果可选值不是nil,则绑定成功:
let num: Int? = 10 //或:letnum:整数?=无
if let unwrappedNum = num {
//num类型为Int?;unwrappedNum类型为Int
print("num was not nil: \(unwrappedNum + 1)")
} else {
print("num was nil")
}您可以为新绑定的变量重用相同的名称,以隐藏原始变量:
//num最初具有Int类型?
if let num = num {
//num在此块中的类型为Int
}将多个可选的绑定与逗号(,)结合使用:
if let unwrappedNum = num, let unwrappedStr = str {
//用unwrappedNum做某事 & unwrappedStr
} else if let unwrappedNum = num {
//用unwrappedNum做某事
} else {
//num为零
}使用where子句在可选绑定之后应用更多约束:
if let unwrappedNum = num where unwrappedNum % 2 == 0 {
print("num is non-nil, and it's an even number")
}如果您喜欢冒险,请插入任意数量的可选绑定和where子句:
if let num = num //num必须为非nil
where num % 2 == 1, //num必须是奇数
let str = str, //str必须为非null
let firstChar = str.characters.first //str也必须为非空
where firstChar != "x" //第一个字符不能为“x”"x"
{
// all bindings & conditions succeeded!
}在Swift3中,where子句已被替换(SE-0099):只需使用另一个子句,来分隔可选绑定和布尔条件。
if let unwrappedNum = num, unwrappedNum % 2 == 0 {
print("num is non-nil, and it's an even number")
}
if let num = num, //num必须为非nil
num % 2 == 1, //num必须是奇数
let str = str, //str必须为非null
let firstChar = str.characters.first, //str也必须为非空
firstChar != "x" //第一个字符不能为“x”"x"
{
// all bindings & conditions succeeded!
}