【问题标题】:Unable to declare a constant as optional in swift?无法在 swift 中将常量声明为可选?
【发布时间】:2017-01-22 17:01:18
【问题描述】:

我有以下代码。我试图将“名称”常量声明为可选,但它不允许它给出错误,因为

没有初始值的存储属性“名称”会阻止合成 初始化器

class VideoMode {

    let resolution = Resolution()
    var interlaced = false
    var frameRate:Float = 0.0
    let name: String?
}

编辑:为什么我会收到这样的错误,因为在结构的情况下它不会给出任何错误

【问题讨论】:

标签: swift optional


【解决方案1】:

你不得不说

var name: String?

您必须为name 分配一个值或具有一个初始化name初始化程序 (init)。

因此,这是合法的:

class VideoMode {
    let name: String?
    init(name:String) {self.name = name}
}

这是合法的:

class VideoMode {
    let name: String? = "howdy"
}

但这不合法:

class VideoMode {
    let name: String? // compile error
}

原因很明显。如果namelet,并且您没有对其进行初始化,则它可以永远设置,因为它是一个常量。编译器不会让这种愚蠢的情况存在。

【讨论】:

    【解决方案2】:

    你必须这样写-

    var name = String()
    

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 1970-01-01
      • 2016-12-09
      • 2012-01-08
      • 1970-01-01
      • 2015-05-21
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多