我是斯威夫特的新手,正在努力学习可选值的概念。我的问题是,在前面的代码上下文中,有必要将变量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似乎是合适的。

10-08 15:40