Funktion, die generisch einen Typ annimmt und denselben Typ zurückgibt

Es fällt mir schwer zu verstehen, warum der Scala-Compiler mit dieser Funktionsdefinition nicht zufrieden ist:

<code>def trimNonWordCharacters[T <: Iterable[String]](items: T): T =
     items map { _.replaceAll("\\W", "") }
</code>

Hier ist derREPL Ausgabe:

<code>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", "") }
</code>

Das Ziel ist es, bei jeder Implementierung eines Iterable die gleiche Art von Back-Out zu erzielen. Ist das möglich?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage