Метод, использующий Seq[T] для возврата String, а не Seq[Char]

Я хотел бы реализовать метод, который принимает произвольные Seq[T]и также возвращает Seq[T]. Но когда предоставляется String, он также должен возвращать String.

Передача Stringработает из-за некоторого неявного преобразования из Stringв WrappedString extends IndexedSeq[Char], но я получаю Seq[Char]взамен. Можно ли вернуть Stringобратно?

val sx: Seq[Int] = firstAndLast(List(1, 2, 3, 4))
val s1: Seq[Char] = firstAndLast("Foo Bar")
val s2: String = firstAndLast("Foo Bar")  //incompatible types error

def firstAndLast[T](seq: Seq[T]) = Seq(seq.head, seq.last)

Реализация firstAndLast()не имеет значения, это только пример.

11
задан Jean-Philippe Pellet 21 May 2012 в 17:00
поделиться