MWE(obs .: cを呼び出すたびにクラスをインスタンス化する必要がないので、関数が必要です):
object Main extends App {
def a(s:String, i:Int) ={
s + i * i //some complex op that yields String
}
def b(i:Int) ={
i / 3 //another complex op that yields Int
}
def c(f: Any => Any) = {
val L = List(1,2,3,4) //list of complex elements
L map f //apply f within some complex loop
}
println(c(a))
/*
scala: type mismatch;
found : (String, Int) => String
required: Any => Any
println(c(a))
^
*/
println(c(b))
/*
scala: type mismatch;
found : Int => Int
required: Any => Any
println(c(b))
^
*/
}
おそらく、同等の質問は、「ある種の関数の継承はありますか?」のようになります。
def f
def fa(i: Int):String extends f
def fb(s: String):Int extends f