我有以下问题。我试图制作一个接受两个参数的高阶函数:字符串和函数类型。函数类型是这样定义的:
(String, List[String]) => List[(String, List[String])]
我还定义了两个具有相同类型的f1
函数。f2
之后我试图myfun
用f1
or打电话f2
。这是代码:
object Main extends App {
def f1(t: (String,List[String])): List[(String,List[String])] = ...
def f2(t: (String,List[String])): List[(String,List[String])] = ...
def myfun(tableName: String)(fn: (String,List[String]) => List[(String,List[String])]): List[(String,List[String])] =
...
val res: List[(String,List[String])] = myfun("...")(f1)
res foreach println
val res2: List[(String,List[String])] = myfun("...")(f2)
res2 foreach println
}
这是错误:
[error] found : (String, List[String]) => List[(String, List[String])]
[error] required: (String, List[String]) => List[(String, List[String])]
[error] val res: List[(String,List[String])] = myfun("...")(f1)
我不明白为什么编译器会抱怨。有人可以解释一下吗?