我有以下代码。我正在尝试声明一个'名称'常量为可选,但不允许它给出错误
存储的属性' name'没有初始值可以防止合成 初始化
class VideoMode {
let resolution = Resolution()
var interlaced = false
var frameRate:Float = 0.0
let name: String?
}
编辑:为什么我得到这样的错误,如果结构不会给出任何错误
答案 0 :(得分:2)
你必须说
var name: String?
或您必须为name
分配一个值,或者使用初始值设定项(init
)来初始化name
。
因此,这是合法的:
class VideoMode {
let name: String?
init(name:String) {self.name = name}
}
这是合法的:
class VideoMode {
let name: String? = "howdy"
}
但这不合法:
class VideoMode {
let name: String? // compile error
}
原因很明显。如果name
是let
,并且您没有对其进行初始化,则永远不会设置,因为它是常量。编译器不会让这种愚蠢的情况存在。
答案 1 :(得分:1)
你必须这样写 -
var name = String()