2
Étant donné le scénario suivantScala: Recueillir avec les génériques
val items = List("a", "b", "c", 1, 2, 3, false, true)
def intItems = items.collect {case i : Int => i}
def stringItems = items.collect {case s : String => s}
est-il un moyen de créer une fonction générique pour gérer ce comportement?
J'ai essayé les suivantes
def itemsAs[T]: List[T] = items.collect { case item: T => item }
mais
itemsAs[Int]
retours
List[Int]] = List(a, b, c, 1, 2, 3, false, true)
Une autre approche est de fournir le partial function
comme argument, mais encore de dupliquer le case i: Int => i
et case s: String => s
. Y a-t-il un moyen de le rendre plus compact? Merci
Ceci est l'approche que j'ai suivie, mais j'ai ajouté les éléments 'def suivants [T <: MyInterface] (balise implicite: ClassTag [T]):' afin de le faire dactylographier et de ne pas autoriser chaque paramètre – Bruno