Swift 便利初始化与自初始化

Swift 便利初始化与自初始化,swift,class,initialization,Swift,Class,Initialization,为什么要使用便利init而不是只为class属性设置默认值?便利初始值设定项可以用于与默认值无关的所有类型。它们可以提供数据转换或许多其他功能。在本例中,方便的初始值设定项允许您将浮点值传递给需要Int的对象 import Foundation class X { let value: Int init(value: Int) { self.value = value } convenience init(rounding float: Flo

为什么要使用便利init而不是只为class属性设置默认值?

便利初始值设定项可以用于与默认值无关的所有类型。它们可以提供数据转换或许多其他功能。在本例中,方便的初始值设定项允许您将浮点值传递给需要Int的对象

import Foundation

class X {
    let value: Int
    init(value: Int) {
        self.value = value
    }

    convenience init(rounding float: Float) {
        self.init(value: Int(round(float)))
    }
}

当然,这也可以作为指定(不方便)的初始值设定项来编写,但将其委托给少数指定的初始值设定项会使子类化更加简单,并可以减少代码重复(因此“方便”)。

您并不总是为类属性提供默认值,有时,创建一个具有属性和方法的类,以及稍后创建该类实例时可能获得的所有属性值。为此,使用init

From:“只要到公共初始化模式的快捷方式可以节省时间或使类的初始化更清晰,就创建方便的初始值设定项。”。你能详细说明你的选择吗?