混淆枚举类的初始化并将TemperatureUnit.Kelvin指定给self(self = .Kelvin)

时间:2016-03-15 23:49:35

标签: swift enums initialization

我正在阅读“Swift编程语言2.1”,并遇到了以下代码。我只是想知道关键字“self”是指什么?当我创建TemperatureUnit的实例var measuringUnit = TemperatureUnit(symbol: "k")时,这会将.Kelvin分配给self,但这是否意味着此case Kelvin的特定实例仅存在TemperatureUnit 1}} enum?

case Celsius和case Fahrenheit将不复存在,至少对于TemperautureUnit的这个例子,这是正确的吗?有人可以向我解释一下吗?

enum TemperatureUnit {
    case Kelvin, Celsius, Fahrenheit
    init?(symbol: Character){
        switch symbol{
        case "k":
            self = .Kelvin
        case "c":
            self = .Celsius
        case "f":
            self = .Fahrenheit
        default:
            return nil
        }
    }
}

var measuringUnit = TemperatureUnit(symbol: "k")

1 个答案:

答案 0 :(得分:1)

  1. self是指init()函数为您创建的枚举实例。
  2. init()仅初始化枚举实例。只要您声明measuringUnit为变量,您仍然可以稍后更改枚举值。即measuringUnit = .Celsius