Я хотел бы реализовать метод, который принимает произвольный Seq[T]
и возвращает Seq[T]
. Но когда предоставляется String
, он также должен вернуть String
.Метод, принимающий Seq [T], чтобы возвращать String, а не Seq [Char]
Передача 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()
реализация не имеет значения, это всего лишь пример.
Я уверен, что он не будет работать с массивами; у вас не определено явное определение –
Это действительно работает, потому что необходимый «ClassManifest» предоставляется неявно методу, предоставляющему соответствующие «CanBuildFrom',' scala.Array.canBuildFrom'. –
Это должно быть проще с Miles 'FromRepr', я думаю. –