Swift可以嵌套吗?

Swift可以嵌套吗?,swift,optional,Swift,Optional,我找不到这个问题的答案,例如,我可以选择一个可选的字符串吗?我试着写一个小测试来检查它: let a : String? = nil; let b : String?? = a; if b!=nil { // error println("has value"); } else { println("fail"); } 但由于我不是一个敏捷的程序员,我不知道如何处理错误,比如说“不能分配给这个表达式的结果”;但是,您的语法不正确。这一行: if b!=nil 编译器将其摘要为: if

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

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

但由于我不是一个敏捷的程序员,我不知道如何处理错误,比如说“不能分配给这个表达式的结果”;但是,您的语法不正确。这一行:

if b!=nil
编译器将其摘要为:

if (b!) = nil
。。。因此它认为您试图将
nil
分配给未包装的可选项。Swift不允许您在
if
语句中进行分配(与Objective-C相反)。相反,要更清楚:

if b != nil
编辑:并且,为了完成这个想法,如果您添加以下内容,则可以证明语法糖确实是在使一个可选项成为可选项:

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

您应该将
nil
视为打印输出。

有人会问:您为什么要这样做?我要注意的是,在研究答案时。@Tommy,我在等待那个评论:-)我在比较编程语言中的可空/可选方法,我可以跟你交换一个小事实——在Kotlin中,它不是嵌套的:-)相关的:。你的语法错误与optionals完全无关<代码>设a=1;设b=2;如果一个=b{}在
周围没有空格=操作符也不会编译。(注意,
println
来自过时的Swift 1.2/Xcode 6.4。)挑剔的编译器:-),因此可以嵌套选项。非常感谢你!