Sto avendo un momento difficile comprendere perché il compilatore Scala è scontento di questa definizione di funzione:funzione che prende genericamente un tipo e restituisce lo stesso tipo
def trimNonWordCharacters[T <: Iterable[String]](items: T): T =
items map { _.replaceAll("\\W", "") }
Ecco la REPL uscita:
scala> def trimNonWordCharacters[T <: Iterable[String]](items: T): T =
items map { _.replaceAll("\\W", "") }
<console>:5: error: type mismatch;
found : Iterable[java.lang.String]
required: T
def trimNonWordCharacters[T <: Iterable[String]](items: T): T = items map { _.replaceAll("\\W", "") }
L'obiettivo è di passare a qualsiasi implementazione di un Iterable e ottenere lo stesso tipo di back-out. È possibile?
duplicati di http://stackoverflow.com/questions/8235462/returning-original-collection-type-in-generic -metodo –
@LuigiPlinge Quella domanda non ha bisogno di 'CanBuildFrom', poiché' filter' non lo richiede. Questa domanda è molto simile, e il _title_ di quella domanda lo copre certamente, ma qui serve un po 'di più per farlo funzionare. –