我有一个问题:“我想它为什么有效,但我应该问它来检查我的想法:D。
我有个密码:
let possibleNumber = "1232"
var somevariable : Int
if let actualNumber = Int(possibleNumber) {
somevariable = actualNumber
} else {
print("\(possibleNumber) could not be converted to an integer")
}
print(somevariable)
错误:在初始化之前使用了变量“somevariable”
但如果我有这样的东西:
let possibleNumber = "1232"
var somevariable : Int
if let actualNumber = Int(possibleNumber) {
somevariable = actualNumber
} else {
somevariable = 0
}
print(somevariable)
它不会有任何问题。
如果我删除else块,它也会出错。无论如何,我的理解是这样的:我不允许你在某个变量可以为零的情况下,因为他的类型不是可选的。
也许我的想法错了,或者你有更好的解释。谢谢你的帮助和良好的链接。
祝你好运!
最佳答案
你的想法是对的
if let actualNumber = Int(possibleNumber)
有可能不是真的,因为else没有赋值,所以错误,而且如果只在else内部赋值,也会得到相同的错误,编译器需要确保值不是nil,因为它不知道哪个块(if或else)将在运行时运行,因此,根据您的条件,您必须使用
Int!
或Int?
,但如果值为nil
,前者将导致崩溃关于ios - Swift可选类型的想法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51697409/