scala lambda函数和局部变量

时间:2017-03-21 10:51:31

标签: scala lambda

当我学习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 )))
}

或者是否有额外的内存分配成本?

1 个答案:

答案 0 :(得分:1)

它在运行时是等效的,因为JIT / Hotspot编译器会在必要时对其进行优化。编译后的类会略大,因为它包含调试器的信息,例如:本地变量的名称。