第一个stackoverflow问题和新的斯卡拉。想了解多态类型与这个例子中,我写道:Scala类型不匹配:Nothing => Nothing?
def identFun[A](a: A): A = a
def testerChar(l: List[Char], f: Char => Char): List[Char] = {
val li = l.map((r: Char) => f(r: Char))
li
}
工作正常(如果不是有点冗长):
scala> testerChar(List('a','b','c'), identFun)
res49: List[Char] = List(a, b, c)
但是:
def testerA[A](l: List[A], f: A => A): List[A] = {
val li = l.map((r: A) => f(r: A))
li
}
产量:
scala> testerA(List('a','b','c'), identFun)
<console>:14: error: type mismatch;
found : Nothing => Nothing
required: Char => Char
testerA(List('a','b','c'), identFun)
我在想什么t将允许“testerA”返回传递给它的任何类型的身份?
谢谢!
尝试:
def testerA[A](l: List[A])(f: A => A): List[A] = {
val li = l.map((r: A) => f(r: A))
li
}
了:
scala> testerA(List('a','b','c'), identFun)
<console>:14: error: too many arguments for method testerA: (l: List[A])(f: A => A)List[A]
testerA(List('a','b','c'), identFun)
将其更改为'def testerA [A](l:List [A])(f:A => A)' –
或者传递类型。 testerA [Char](List('a','b','c'),identFun) – sascha10000
curried'def'应该像这样调用:'testerA(List(...))(identFun)',使用''(''代替'',''' – Clashsoft