Swift optional 可以嵌套吗?

Can Swift optional be nested?

我找不到这个问题的答案,例如我可以有可选的字符串吗?我试着写了一个小测试来检查一下:

let a : String? = nil;
let b : String?? = a;
if b!=nil { // error
  println("has value");
}
else {
  println("fail");
}

但由于我不是 Swift 程序员,所以我不知道如何处理 "cannot assign to the result of this expression".

错误

是的,你可以;你的语法虽然不正确。这一行:

if b!=nil

被编译器消化为:

if (b!) = nil

... 所以它认为您正在尝试将 nil 分配给未包装的可选。 Swift 不允许您在 if 语句中进行赋值(与 Objective-C 相反)。相反更清楚:

if b != nil

编辑:并且,为了完成这个想法,证明语法糖确实是一个可选的可选,如果你添加:

if let b = b {
    print("\(b)")
}

您应该看到 nil 作为打印输出。