Scala:将本机类型添加到类型参数列表会引发错误

Scala: Adding native types to type parameter list throws an error

在Scala函数中定义类型参数列表时,它引入了可以在函数签名中引用的类型变量,例如

def test[A,B,C] (a: A, f: (A,B) => C): B => C 

我的问题可能很琐碎,但我似乎无法弄清楚为什么

def sum[Int](l: List[Int]): Int = { 
    l.foldLeft(0)((a, b) => a +b ) 
} 

投掷

None of the overloaded alternatives of method + in class Int with types
 (x: Double): Double
 (x: Float): Float
 (x: Long): Long
 (x: Int): Int
 (x: Char): Int
 (x: Short): Int
 (x: Byte): Int
 (x: String): String
match arguments ((b : Int))mdoc

而简单地删除类型参数 [Int] 编译完全没问题。

def sum(l:List[Int]): Int = { 
    l.foldLeft(0)((x, y) => x + y)
}

sum[Int](l: List[Int]): Int 方法定义中,您实际上声明了一个名为 Intgeneric type parameter,它只匹配预定义类型的名称但与其无关,因此编译器无法找到有效的+ 方法。