是否有必要设置变量" possibleIntegerValue'到'可选的Int(Int?)'或者可以设置' possibleIntegerValue'类型' Int'代替?

时间:2016-01-20 05:15:31

标签: swift optional optional-values

我是Swift的新手,正在尝试学习可选值的概念。我的问题是,在之前的代码的上下文中,有必要设置变量" possibleIntegerValue'到'可选的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).")
}

1 个答案:

答案 0 :(得分:3)

Optionals允许你有一个没有价值的案例。您可以使用以下选项声明变量:

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一个值,因此使用Optional Int似乎是合适的。