【发布时间】:2014-06-04 14:34:23
【问题描述】:
我想我对“展开”可选值的概念感到困惑,非常感谢任何指导!
根据 Swift 编程语言指南,一个可选项需要在使用前解包,除非它使用 ! 隐式解包。
来自:Apple Inc.“Swift 编程语言”。电子书。 https://itun.es/gb/jEUH0.l:
let possibleString: String? = "An optional string."
println(possibleString!) // requires an exclamation mark to access its value
而
let assumedString: String! = "An implicitly unwrapped optional string."
println(assumedString) // no exclamation mark is needed to access its value
但是,在 Xcode 中,我可以执行以下操作并仍然打印可选字符串的值:
let teamname: String? = "Liverpool!"
println("Come on \(teamname)")
我错过了什么?
【问题讨论】:
-
查看我的回答here。此外,字符串插值会自动解开您的对象。
-
这是一个非常清楚的解释,所以谢谢,但恐怕我还是有点困惑。它是否是该答案的底部 - 即“第一种情况和后两种情况之间的区别在于,如果 optionalSquare 设置为 nil,后两种情况会给你一个运行时错误”?
-
我添加了一个您可能没有在评论中发现的 ninja 编辑 - 字符串插值会自动解开您的对象。
-
我写了一篇关于可选的文章,可能会有所帮助。有关字符串自省的问题,请参阅“粗略”部分。 medium.com/@rrridges/swift-optionals-a10dcfd8aab5
-
@CezaryWojcik 谢谢,我不知道!但是,即使我只写 println(teamname),字符串仍然会展开