我正在尝试在Swift的IF语句中使用元组作为 optional 绑定(bind),但是它不会编译,并且该错误消息没有多大用处。为什么以下代码不编译?

let user:String? = "billy"
let pass:String? = "password"

if let test = (user?,pass?){
    print("this works")
}

或这个
let user:String? = "billy"
let pass:String? = "password"

if let test = (user,pass){
    print("this works")
}

最佳答案

编辑:从Xcode 6.3中的Swift 1.2开始,您现在可以执行以下操作:

if let user = user, pass = pass { }

绑定(bind)多个未包装的 optional 值。

您不能以这种方式使用 optional let绑定(bind)。 let test = (user,pass)不会编译,因为(user,pass)不是 optional –它是一个包含 optional 元组。也就是说,它是(Int?,Int?)而不是(Int,Int)?

这应该做您想要的,并允许您同时绑定(bind)两个项目:
switch (user, pass) {
    case let (.Some(user), .Some(pass)):
        print("this works: \(user), \(pass)")
    default: ()  // must handle all cases
}

关于ios - Swift元组的 optional 绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27991378/

10-14 20:09