def first[A] :Tuple2[A,_] => A = ( pair :Tuple2[A,_] ) => pair._1
val name = first( ("Anna", 23) )
“如果你仔细看看第 2 行,你在这里看到的是一个方法调用,它返回一个新创建的 Tuple2[String,Any] => String 类型的函数(因为编译器启动并推断出应用所需的类型人)。虽然整个表达式看起来像一个普通的方法调用,但实际上它是一个方法调用(对一个没有任何参数的工厂方法)和一个函数调用。“——这就是上面代码的解释。
我无法推断上述过程的第一步(创建函数对象的过程)。有人可以明确地写出“人类编译器”程序吗?
编辑:我认为第 2 行的完全扩展逻辑应该是以下两行
val firstAsFunc= first[String];
val name = firstAsFunc(("Anna", 23))