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。)挑剔的编译器:-),因此可以嵌套选项。非常感谢你!