【发布时间】:2012-11-29 16:10:16
【问题描述】:
我有以下问题。我试图制作一个接受两个参数的高阶函数:字符串和函数类型。函数类型是这样定义的:
(String, List[String]) => List[(String, List[String])]
我还定义了两个具有相同类型的函数f1 和f2。之后我尝试用f1 或f2 打电话给myfun。代码如下:
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)
我不明白为什么编译器会抱怨。谁能解释一下?
【问题讨论】:
-
您使用的是哪个版本的
scalac? -
我使用的是 Scala 2.9.1 是否还有不同的编译器版本?
标签: scala