Swift 为什么会有这样的问题?在if-let语句中标记,以查看可选值是否有值
我正在读下面这本书,第32页有一个代码片段。2014年12月:第一版 与CocoaJonathon Manning、Paris Buttfield Addison和, 还有蒂姆·纽金特 我知道我们可以使用Swift 为什么会有这样的问题?在if-let语句中标记,以查看可选值是否有值,swift,Swift,我正在读下面这本书,第32页有一个代码片段。2014年12月:第一版 与CocoaJonathon Manning、Paris Buttfield Addison和, 还有蒂姆·纽金特 我知道我们可以使用?使vairbale成为可选的在Swift中打开可选vairbale var str: String? = "string" if let theStr = str? { println("\(theStr)") } else { prin
?
使vairbale成为可选的代码>在Swift中打开可选vairbale
var str: String? = "string"
if let theStr = str? {
println("\(theStr)")
} else {
println("nil")
}
为什么我们需要?
在这行中,如果让theStr=str?
没有它似乎工作得很好,没有任何区别
你不需要它,也不应该拥有它。可选绑定计算可选绑定。如果为零,则停止。如果不是nil,它会将值赋给所需的变量,然后在If语句的大括号内执行代码
编辑:
自首次以测试版形式发布以来,该语言略有变化。我猜是这样吗?过去是必须的
我从Github使用的一些示例项目无法编译,我不得不编辑它们以使其正常工作。这可能是一个语法略有变化的示例。当前版本的Swift不需要它,因为它是多余的,因为您的变量已经是可选的
但是,在if-let语句中输入的任何内容都必须是可选的,否则将收到错误
条件绑定中的绑定值必须是可选类型
此外,如果要强制转换为类型,则确实需要使用as?
强制转换为可选类型
var str2: Any = ["some", "example"]
if let theStr = str2 as? [String] {
println("\(theStr)")
} else {
println("nil")
}
你为什么认为你需要这么做?在if let?中,我正在阅读“与Cocoa Jonathon Manning、Paris Buttfield Addison和Tim Nugent合作的快速发展”这本书,它提供了一个示例if let str=str{println(“(str)”}@LeonardoSavioDabus,我知道这部作品。我的问题是为什么在可选绑定中需要?
<代码>如果let newStr=str?{…}
您不需要为应用程序中的每个可选项创建第二个var。您知道在哪里可以找到更多关于if let
语句的参考吗?并且,附加的?
不会使代码至少在@X.Li使用官方文档时无法编译。苹果的iBook“Swift编程语言”中有一节介绍了可选绑定(这就是“if-let”构造的名称)。感谢您将答案扩展到类型转换