Usando shapeless, usted puede fácilmente obtener una gran cantidad de métodos útiles, que están generalmente disponibles sólo en colecciones:
import shapeless.syntax.std.tuple._
val t = ("a", 2, true, 0.0)
val first = t(0)
val second = t(1)
// etc
val head = t.head
val tail = t.tail
val init = t.init
val last = t.last
val v = (2.0, 3L)
val concat = t ++ v
val append = t :+ 2L
val prepend = 1.0 +: t
val take2 = t take 2
val drop3 = t drop 3
val reverse = t.reverse
val zip = t zip (2.0, 2, "a", false)
val (unzip, other) = zip.unzip
val list = t.toList
val array = t.toArray
val set = t.to[Set]
Todo lo que se escribe como cabría esperar (que es first
tiene tipo String
, concat
tiene por tipo (String, Int, Boolean, Double, Double, Long)
, etc.)
El último método anterior (.to[Collection]
) debería estar disponible en la próxima versión (a partir de 2014/07/19).
También puede "actualizar" una tupla
val a = t.updatedAt(1, 3) // gives ("a", 3, true, 0.0)
sino que devolverá una nueva tupla en lugar de la mutación de la original.
λ G, ¡gracias de nuevo! – Freewind
@Freewind, ¡Bienvenido! – missingfaktor