是否有可能在初始化时直接改变属性/变量?

时间:2017-03-26 10:25:12

标签: swift

我正在考虑下面代码片段的内容,这显然不起作用但传达了我的意图。这个给出了在其自己的初始值中使用的错误消息变量。

private let formatter = NumberFormatter() {
    formatter.maximumFractionDigits = 6
}

2 个答案:

答案 0 :(得分:0)

我认为这是初始化程序的工作,做这样的事情是标准的:

class NumberFormatter {
    var maximumFractionDigits: Int = 0

    init(maximumFractionDigits: Int) {
        self.maximumFractionDigits = maximumFractionDigits
    }
}

let formatter = NumberFormatter(maximumFractionDigits: 6)

答案 1 :(得分:0)

不,你不能在自己的初始化中改变一个属性。 你可以做的是使属性的初始值为 “立即评估关闭”:

private let formatter: NumberFormatter = {
    let fmt = NumberFormatter()
    fmt.maximumFractionDigits = 6
    // ...
    return fmt
}()

这会创建一个NumberFormatter,设置所需的属性, 并将结果分配给formatter属性。