Saltar al contenido

Agregar un elemento en un Seq en scala

Este grupo redactor ha estado largas horas buscando la resolución a tu pregunta, te regalamos la soluciones por esto nuestro deseo es serte de mucha apoyo.

Solución:

Dos cosas. cuando usas :+la operación es asociativo por la izquierdalo que significa que el elemento al que está llamando el método debe estar en el lado izquierdo.

Ahora, Seq (como se usa en su ejemplo) se refiere a immutable.Seq. Cuando agrega o antepone un elemento, devuelve un nueva secuencia que contiene el elemento adicional, no lo agrega a la secuencia existente.

val newSeq = customerList :+ CustomerDetail("1", "Active", "Shougat")

Pero agregar un elemento significa recorrer toda la lista para agregar un elemento, considere anteponer:

val newSeq = CustomerDetail("1", "Active", "Shougat") +: customerList

Un ejemplo simplificado:

scala> val original = Seq(1,2,3,4)
original: Seq[Int] = List(1, 2, 3, 4)

scala> val newSeq = 0 +: original
newSeq: Seq[Int] = List(0, 1, 2, 3, 4)

Podría valer la pena señalar que mientras el Seq agregar operador de elemento, :+es asociativo por la izquierdael operador antepuesto, +:es asociativo derecho.

Así que si tienes un Seq colección con List elementos:

scala> val SeqOfLists: Seq[List[String]] = Seq(List("foo", "bar"))
SeqOfLists: Seq[List[String]] = List(List(foo, bar))

y desea agregar otro “elemento” a la secuencia, la adición se realiza de esta manera:

scala> SeqOfLists :+ List("foo2", "bar2")
res0: Seq[List[String]] = List(List(foo, bar), List(foo2, bar2))

y anteponer se hace de esta manera:

scala> List("foo2", "bar2") +: SeqOfLists
res1: Seq[List[String]] = List(List(foo2, bar2), List(foo, bar))

como se describe en el documento API:

Un mnemotécnico para +: vs. :+ es: COLon va en el lado COLlection.

Descuidar esto cuando se manejan colecciones de colecciones puede conducir a resultados inesperados, es decir:

scala> SeqOfLists +: List("foo2", "bar2")
res2: List[Object] = List(List(List(foo, bar)), foo2, bar2)

Puedes añadir valor a nuestra información colaborando tu veteranía en las crónicas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *