Processor20().process(s)
называется функцией process
и возвращает Unit
, но Processor20().process
- это функция, которую можно сохранить на карте
Попробуйте что-то вроде:
trait Processor00 {
def process(x:String): Unit
}
case class Processor20() extends Processor00 {
override def process(x:String): Unit = println("Processor20 x :" + x)
}
case class Processor30() extends Processor00 {
override def process(x:String): Unit = println("Processor30 x :" + x)
}
object Main extends App {
val s: String = "yes"
val myFuncs: Map[String, String => Unit] = Map(
"string2" -> Processor20().process,
"string3" -> Processor30().process
)
myFuncs.foreach { case (key, f) => f(s) } // or f(key)
}