我理解当我这样做时:
val sum = (a: Int, b: Int) => a + b
Scala编译器把它变成了这个:
val sum = new Function2[Int, Int, Int] {
def apply(a: Int, b: Int): Int = a + b
}
因此,Function2是为基于Int的操作而创建的类。我们使用[]来表示此类中的操作仅涉及(输入,输出,正文)Int。 []中的一个Int条目不仅足以表达这一点。但是我们在[]中有3个Int条目。
答案 0 :(得分:3)
String.format
中没有任何内容表明它是“基于Int的操作”。
final
是一个泛型函数的类,它接受Function2
和Function2[X, Y, Z]
类型的两个输入并返回X
。
指定单个Y
显然是不够的,因为Z
需要三个类型参数。
否则你怎么能区分
Int
和
Function2
例如在
中Function2[Int, Int, Int]
是
的语法糖Function2[Int, Double, String]
如果您经常将val sum = (a: Int, b: Double) => a + " -> " + b
用于同一类型val sum = new Function2[Int, Double, String] {
def apply(a: Int, b: Double) = a + " -> " + b
}
,则可以定义类型别名:
Function2[T, T, T]
或更短:
T