У меня есть класс MyFilter , который имеет много разных версий. В зависимости от входной версии я хочу вызвать этот объект и применить этот фильтр. Пример показан ниже:
object v1{
def apply(l: List[String]) = {
l.filter(_.contains("v1"))
}
}
object v2{
def apply(l: List[String]) = {
l.filter(_.contains("v2"))
}
}
object MyFilter {
def apply(version: String) = (l: List[String]) => {
println("Applying Filter")
version match {
case "v1" => v1(l)
case "v2" => v2(l)
case _ =>
}
}
}
val df = List("a-v1", "b-v1", "c-v2", "d-v2")
println(MyFilter("v1")(df))
println(MyFilter("v2")(df))
Теперь, если у меня много версий, будет длинный список case в совпадении . Как я могу этого избежать и напрямую вызвать apply метод Object , используя переданную версию, которая является строкой. Было бы здорово, если бы кто-нибудь мог помочь.