在Scala中调用函数时,函数参数是否为实例化的FunctionN类型的类变量?
答案 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方法。