我是斯威夫特的新手,正在努力学习可选值的概念。我的问题是,在前面的代码上下文中,有必要将变量possibleIntegerValue设置为optional Int(Int?)或者可以省略?
符号,改为将“possibleIntegerValue”设置为“Int”类型?
如果我真的将类型从可选Int改为Int,会产生什么样的影响?
let numberSymbol: Character = "三" // Simplified Chinese for the number 3
var possibleIntegerValue: Int?
switch numberSymbol {
case "1", "١", "一", "๑":
possibleIntegerValue = 1
case "2", "٢", "二", "๒":
possibleIntegerValue = 2
case "3", "٣", "三", "๓":
possibleIntegerValue = 3
case "4", "٤", "四", "๔":
possibleIntegerValue = 4
default:
break
}
if let integerValue = possibleIntegerValue {
print("The integer value of \(numberSymbol) is \(integerValue).")
} else {
print("An integer value could not be found for \(numberSymbol).")
}
最佳答案
选项允许你有一个没有价值的案例。您可以使用以下选项声明变量:
var possibleIntegerValue: Int? // Optional Int
var possibleIntegerValue: Int = 0 // Not optional but must *always* have a value
var possibleIntegerValue: Int! // Implicitly unwrapped Optional Int
在上面的第三个选项中,您可以保证
possibleIntegerValue
在第一次使用时具有一个值(或者您的应用程序将因未预料到的异常而崩溃)。因为
switch
语句有一个不给default
值的possibleIntegerValue
,所以使用可选Int似乎是合适的。