Chciałbym wdrożyć metodę, która ma arbitralny Seq[T]
i zwraca Seq[T]
, jak również. Ale pod warunkiem, że jest dostarczony String
, powinien również zwrócić String
.Metoda przyjmuje Seq [T], aby zwrócić ciąg zamiast Seq [Char]
Przechodząc String
prace z powodu jakiegoś niejawna konwersja z String
do WrappedString extends IndexedSeq[Char]
, ale pojawia Seq[Char]
w zamian. Czy można odzyskać 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()
realizacja ma znaczenia, to tylko przykład.
Jestem prawie pewien, że nie będzie działać z tablicami; nie masz zdefiniowanego manifestu –
To działa, ponieważ wymagany "ClassManifest" jest dostarczany pośrednio do metody dostarczającej odpowiedni 'CanBuildFrom',' scala.Array.canBuildFrom'. –
To powinno być łatwiejsze z "OdRepr" Milesa, jak sądzę. –