Функция, которая обычно принимает тип и возвращает тот же тип

Мне трудно понять, почему компилятор Scala недоволен этим определением функции:

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

Вот вывод REPL:

scala> def trimNonWordCharacters[T <: Iterable[String]](items: T): T =
     items map { _.replaceAll("\\W", "") }
:5: error: type mismatch;
 found   : Iterable[java.lang.String]
 required: T
       def trimNonWordCharacters[T <: Iterable[String]](items: T): T = items map { _.replaceAll("\\W", "") }

Цель состоит в том, чтобы передать любую реализацию Iterable и получить ответ того же типа. Возможно ли это?

6
задан Peter Mortensen 9 June 2013 в 19:31
поделиться