在 Scala 中,传递指向对象的指针,而不是对象本身。那么这样说是否正确,通过如下嵌套函数传递对象指针没有问题,即不会分配对象层?
case class Parameters(name: String, id: String, values: Array[Double])
case class Context(id: String, a: Double, b: Double, c: Double)
和
def myFunc(par: Parameters, ctx: Context): Unit = {
//..do stuff
for (i<- 1 to ITERATIONS) {
otherFunctions.resolve(par, ctx)
}
object otherFunctions {
def resolve(params: Parameters, ctx: Context): Unit = {
//do more ...
val x: Int = {...}
calculate(params.values, ctx.a, ctx.b, x)
}
def calculate(array: Array[Double], b: Double, c: Double, x: Int) = ...
}
}
在这种情况下,在 and 的实例上调用 when ,myFunc
因为默认是按值调用,所以 scala “首先评估参数”。我的困惑是,从这个意义上说,“评估”是对象的复制,还是仅仅是指针。这显然会影响我是否在 for 表达式之前拉出参数。 Parameters
Context