使用可变参数函数进行类型检查
Type checking with a varargs function
如果我定义这个(废话)函数:
def g[A](f: (A*) => A): Int = {
10
}
为什么编译器类型不检查以下情况?
def add(x: Int, y: Int) = x+ y
g(add)
我的意思是,不应该 (A, A)
键入检查 (A*)
吗?
(A, A)
是一个 元组 (Tuple2
),因此它不会对 (A*)
进行类型检查。只有实际取 A*
的函数才能传递给 g
,例如:
def add(ints: Int*): Int = ints.sum
如果我定义这个(废话)函数:
def g[A](f: (A*) => A): Int = {
10
}
为什么编译器类型不检查以下情况?
def add(x: Int, y: Int) = x+ y
g(add)
我的意思是,不应该 (A, A)
键入检查 (A*)
吗?
(A, A)
是一个 元组 (Tuple2
),因此它不会对 (A*)
进行类型检查。只有实际取 A*
的函数才能传递给 g
,例如:
def add(ints: Int*): Int = ints.sum