次の問題があります。String と関数型の 2 つのパラメーターを受け入れる高次関数を作成しようとしていました。関数型は次のように定義されます。
(String, List[String]) => List[(String, List[String])]
また、同じ型を持つ2 つの関数f1
を定義しました。その後、orf2
で呼び出そうとしています。コードは次のとおりです。myfun
f1
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)
コンパイラが不平を言っている理由がわかりません。誰かがそれを説明できますか?