说我有一个叫做的函数:
func myFunction() throws -> Bool {
// ...
return true
}
是否存在我不知道如何使用它的语法:
if aFlag && try myFunction() {
// do this
}
当我编译它时,它当然失败了,因为它说“尝试不能出现在非赋值操作的权利”。有没有办法使这项工作或我将不得不采用我目前的解决方案:
if aFlag {
let result = try myFunction()
if result {
// do this
}
}
答案 0 :(得分:2)
您使用try?
通过将错误转换为可选值来处理错误,并与nil
合并运算符结合使用以提供错误,例如false
作为调用抛出的具体值( - >视为nil
)
func myFunction() throws -> Bool {
return true
}
let aFlag = true
if aFlag, (try? myFunction()) ?? false {
print("Function call succeeded and returned 'true'!")
}
/* or ...
if aFlag && (try? myFunction()) ?? false { ... } */
/* or, optionally bind the return value and use as predicate if non-nil ...
if aFlag, let anotherFlag = (try? myFunction()), anotherFlag { ... } */
然而,这会抑制抛出的错误,这使得myFunction()
首先成为投掷者有点疑问。也许您更希望在您在投掷函数中视为错误的情况下只返回nil
的函数?
答案 1 :(得分:0)
在Swift 3中,您可以使用,
而不是&&
,例如
if aFlag, try myFunction() {
print("OK")
}