pub*_*oid 1 if-statement optional swift
我一直在玩swift的可选项.我经常使用条件展开模式:
var myOptional: AnyObject?
if let unwrapped = myOptional {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是,有时候我有两个可选值,如果两个都是非零的话我只想使用它们.因此,我尝试使用以下语法:
var myOptional: AnyObject?
var myOtherOptional: AnyObject?
if let unwrapped = myOptional && let otherUnwrapped = myOtherOptional? {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将这两个部分放在括号等中,但似乎没有办法做到这一点.有没有理由说我不应该这样做?显然我可以在另一个语句中嵌入一个语句,但我更愿意将它全部放在一行上.
从Swift 1.2您开始可以打开多个选项和条件.
"if let"构造已经扩展为允许使用类似于泛型约束的语法在单个if(或while)语句中测试多个选项和保护条件:if a a = foo(),b = bar()其中a <b ,让c = baz(){}这允许你测试多个选项并包括插入的布尔条件,而不会引入不希望的嵌套(即,避免"厄运金字塔").
因为语言不支持它.
在文件中:
if语句中任何条件的值必须具有符合BooleanType协议的类型.条件也可以是可选的绑定声明,如Optional Binding中所述.
的condition必须是"的表达BooleanType或"任选的绑定声明"".并且"可选绑定声明"不是"表达式",因此您无法加入&&.
相反,你可以这样做switch:
switch (myOptional, myOtherOptional) {
case let (.Some(unwrapped), .Some(otherUnwrapped)):
// do stuff
println("\(unwrapped), \(otherUnwrapped)")
default:
break
}
Run Code Online (Sandbox Code Playgroud)