在玩Swift时,我遇到了以下情况:
let testVar: String = "random string"
var myVar: Int! = 0
myVar = Int(testVar)
print("myVar = \(myVar)")
输出: -
myVar = nil
由于我在!
之前使用了myVar
标记,它是否应该始终包含非零值?
myVar
nil
怎么样?{1}}
这是我的游乐场代码的截图:
答案 0 :(得分:1)
'!'表示强制解包可选项。但是它的类型仍然是可选的,因此可以是零。
(你只是告诉编译器你保证不会变为零。)
像......一样的行
let v: Int = myVar
...在您的代码结束时,您将获得预期的崩溃。
另一个例子是出口的处理方式。它们通常定义如下:
@IBOutlet weak var detailDescriptionLabel: UILabel!
在调用viewDidLoad
之前,它是零。再次,'!'只是对编译器的承诺,它在包含有效引用之前不会被使用。
答案 1 :(得分:0)
我认为,当您testVar
为int
时,您将string
转换为myVar
。由于<div class='question'>
被打开,因此可能默认为nil