Scala函数参数是否成为类变量?

时间:2017-03-26 00:59:21

标签: scala jvm

在Scala中调用函数时,函数参数是否为实例化的FunctionN类型的类变量?

1 个答案:

答案 0 :(得分:1)

我假设函数是指一个匿名函数,因为这是一个FunctionN类型实例化的时候。

函数N的apply方法将使用函数参数调用,每个文档将“将此函数的主体应用于参数。”

考虑一下:

object Main {

  def main(args: Array[String]): Unit = {

    def anonFun = (x:  Int) => x

    anonFun(5)
  }
}

如果你看一下生成的字节码,你会看到如下内容:

INVOKESPECIAL com/mf/Main$.anonFun$1 ()Lscala/Function1;
ICONST_5
INVOKEINTERFACE scala/Function1.apply$mcII$sp (I)I

INVOKESPECIAL加载匿名函数,然后加载常量5并使用常量调用Function1的apply方法。