Swift Memberwise初始值设定项-对除一个属性外的所有属性使用默认属性

时间:2018-12-01 23:34:42

标签: swift

我是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) 

,但似乎不得不重新输入默认值。

2 个答案:

答案 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
    }

}