如何在Kotlin中的多个属性初始化中使用计算?

问题描述

我想做一次可能成本很高的计算,以使用其结果初始化两个类属性,理想情况下应为val s。有正确的方法吗?

例如:

class Foo(aIn: Double,bIn: Double) {
    val a = aIn * bigCalc(aIn,bIn)
    val b = bIn * bigCalc(aIn,bIn)
}

我无法在init块中执行此操作,因为无法在此之外访问结果,我宁愿不要使a和b var保持不变,我宁愿不要将其保留为in这个例子很慢,没有充分的理由。

解决方法

您实际上可以使用dist

init

但是,这与您拥有的代码相同。创建类时,两者都会初始化变量。因此,使用class Foo(aIn: Double,bIn: Double) { val a: Double val b: Double init { a = aIn * bigCalc(aIn,bIn) b = bIn * bigCalc(aIn,bIn) } } 不会提高性能。选中此similar SO answer