只需显式指定类型即可帮助部分函数机制:
l.reduce[(Int, Int)]{ case ((a,b), (c, d)) => (a + b, c + d)}
Without [(Int, Int)]
scala 无法推断部分函数的正确类型
附:如果您感兴趣为什么会看到此错误String
无论您实际使用什么类型(它是Int
在你的情况下):
found : Any ,
required: String
这是因为字符串中隐含的“+”Predef
。这不是这个隐式的唯一问题 - 你可以看看SI-194 https://issues.scala-lang.org/browse/SI-194.
即使没有那个:
l.reduce{ case ((a,b), (c, d)) => (a, d)}
The argument types of an anonymous function must be fully known. (SLS 8.5)
Expected type was: (?, ?) => ?
scala 无法推断类型,因为它无法推断部分函数的类型 - 可能是 Int 的任何超类型:(A1, A1) => A1
预期,其中[A1 >: A]