[英]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.