如何在 Kotlin 的多个 属性 初始化中使用计算?
How to use a calculation in multiple property initializations in Kotlin?
我想做一次可能代价高昂的计算,使用它的结果来初始化两个 class 理想情况下应该是 val
的属性。有正确的做法吗?
例如:
class Foo(aIn: Double, bIn: Double) {
val a = aIn * bigCalc(aIn, bIn)
val b = bIn * bigCalc(aIn, bIn)
}
我不能在 init 块中执行此操作,因为无法在该块之外访问结果,我宁愿不创建 a 和 b var
s,因为它们应该是不可变的,我宁愿不保留它就像在示例中一样,因为没有充分的理由这会很慢。
你实际上可以使用init
class Foo(aIn: Double, bIn: Double) {
val a: Double
val b: Double
init {
a = aIn * bigCalc(aIn, bIn)
b = bIn * bigCalc(aIn, bIn)
}
}
然而,这与您拥有的代码相同。两者都在创建 class 时初始化变量。所以使用 init
不会提高性能。检查这个 .
我想做一次可能代价高昂的计算,使用它的结果来初始化两个 class 理想情况下应该是 val
的属性。有正确的做法吗?
例如:
class Foo(aIn: Double, bIn: Double) {
val a = aIn * bigCalc(aIn, bIn)
val b = bIn * bigCalc(aIn, bIn)
}
我不能在 init 块中执行此操作,因为无法在该块之外访问结果,我宁愿不创建 a 和 b var
s,因为它们应该是不可变的,我宁愿不保留它就像在示例中一样,因为没有充分的理由这会很慢。
你实际上可以使用init
class Foo(aIn: Double, bIn: Double) {
val a: Double
val b: Double
init {
a = aIn * bigCalc(aIn, bIn)
b = bIn * bigCalc(aIn, bIn)
}
}
然而,这与您拥有的代码相同。两者都在创建 class 时初始化变量。所以使用 init
不会提高性能。检查这个