我是Swift的新手,学习来龙去脉,如果以下问题可能很明显,请原谅。
是否可以使用成员级初始化程序来更改实例的一个属性,并将其他所有属性保留为默认值?例如,如果我具有以下结构:
struct Size {
var width = 0.0, height = 0.0
}
是否有一种优雅的方法来仅更改一个属性,例如
var size = Size(width: 5.0)
当我尝试上述操作时,出现编译器错误。要解决此问题,我可以这样做:
var size = Size(width: 5.0, height: 0.0)
,但似乎不得不重新输入默认值。
答案 0 :(得分:2)
此init
具有默认值。
struct Size {
var width = 0.0, height = 0.0
init(width: Double = 0.0, height: Double = 0.0) {
self.width = width
self.height = height
}
}
然后可以像这样创建对象:
var size = Size(width: 5.0)
答案 1 :(得分:0)
结构默认情况下为所有属性或没有属性设置了初始化程序。如果需要创建自己的初始化程序并设置默认值,只需创建convenience
初始化程序即可仅设置一个属性:
struct Size {
var width = 0.0, height = 0.0
convenience init(width: Double) {
self.width = width
}
}