繁体   English   中英

在 Swift 中初始化 Class 的属性

[英]Initializing properties of a Class in Swift

为什么此代码有效:

class EquilateralTriangle {

    var sideLength: Double = 3.0
    var perimeter: Double {
            return 3.0 * sideLength
    }
}

这不会:

class EquilateralTriangle {

    var sideLength: Double = 3.0
    var perimeter: Double = 3.0 * sideLength
}
var perimeter: Double {
    return 3.0 * sideLength
}

是这个的简写:

var perimeter: Double {
    get {
        return 3.0 * sideLength
    }
}

这是一种糖:

func permiter() -> Double {
    return 3.0 * sideLength
}

所以它是一个计算属性,带有大括号的东西是 function - 任何时候读取周长值时,function 都会运行并使用 sideLength 的当前值返回 3 * sideLength

var perimeter: Double = 3.0 * sideLength

无效 - 它将尝试使用默认值初始化属性,但不能引用其他值。 它将作为编译时常量表达式工作,因此如果您将其更改为 3.0 * 3.0。 但这也意味着其他东西,它不会每次都计算值。 你会说这个属性只是一个 Double,它有一些你可以改变的值,如果你愿意,它的初始值为 9。这意味着如果 sideLength 从 3 更改,它不是 permiter 的正确值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM