当我学习scal时,我想知道在lambda函数中使用局部变量时的优化。
例如以下代码:
val My_List = l.map{x =>
val a = coomplexFun(x.attr_1, x.attr_2 ) ;
(x.attr_1, doSomthing(a))
}
相当于:
val My_List = l.map{x =>
(x.attr_1, doSomthing(coomplexFun(x.attr_1, x.attr_2 )))
}
或者是否有额外的内存分配成本?
答案 0 :(得分:1)
它在运行时是等效的,因为JIT / Hotspot编译器会在必要时对其进行优化。编译后的类会略大,因为它包含调试器的信息,例如:本地变量的名称。