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
方法定义中,您实际上声明了一个名为 Int
的 generic type parameter,它只匹配预定义类型的名称但与其无关,因此编译器无法找到有效的+
方法。
在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
方法定义中,您实际上声明了一个名为 Int
的 generic type parameter,它只匹配预定义类型的名称但与其无关,因此编译器无法找到有效的+
方法。