swift - 枚举类的初始化和将TemperatureUnit.Kelvin分配给self(self = .Kelvin)的困惑

标签 swift enums initialization

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

摄氏温度和华氏温度将不再存在,至少对于这个 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. self 指的是 init() 函数为您创建的枚举实例。
  2. init() 仅初始化枚举实例。只要您将 measuringUnit 声明为变量,您以后仍然可以更改枚举值。即 measuringUnit = .Celsius

关于swift - 枚举类的初始化和将TemperatureUnit.Kelvin分配给self(self = .Kelvin)的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024388/

相关文章:

c++ - 自定义枚举基础类型

c++ - 为什么我可以使用列表初始化普通数组而不使用赋值运算符

c++ - 只移动迭代器一次

swift - 扩展错误 Swift 3 JSON

xcode - 如何在 XCode 的 Interface Builder 中创建垂直 slider ?

swift - 由于 'private' 保护级别,Cocoapods lint 错误无法访问

ios - 使用嵌套的 UIStackview 隐藏 UIStackView

c# - 如何将枚举设置为空

c# - 为什么 "Not all code paths return a value"带有 switch 语句和枚举?

c++ - 如何正确初始化不可默认构造的类成员?