如何在 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 vars,因为它们应该是不可变的,我宁愿不保留它就像在示例中一样,因为没有充分的理由这会很慢。

你实际上可以使用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 不会提高性能。检查这个 .