scala编译器在这里做什么?
def f[A](x: A): A = {
x
}
f(1,2,3)
res0: (Int, Int, Int) = (1,2,3)
我不是要求x
成为一个可变参数。但是,编译器似乎正在将参数列表转换为产品类型。
如果我指定类型,例如
def f(x: Int): Int = {
x
}
然后尝试拨打
f(1,2,3)
编译器辩称too many arguments (3) for method f
不应该说Expected Int and found (Int, Int, Int)
吗?
为什么会这样?
答案 0 :(得分:3)
编译器将类型A
推断为Tuple3[Int, Int, Int]
a.k.a. (Int, Int, Int)
。它提供了将f(1,2,3)
转换为f((1,2,3))
的语法功能。