在scala中,我经常发现自己将一个元组传递给一个函数。例如,作为集合的累加器元素。最简单的情况是:
val x = (a,b)
def f(x : Tuple[Int, Double]) : Int
编译器是否会将其优化为
def f(a : Int, b : Double) : Int
换句话说,本地范围的产品类型(Tuple
s,case class
es或从Product
派生的任何内容)是否会被优化以避免堆分配通过new
?
另一个问题是这是否也适用于退货类型?