I'm trying to use the code below to append items into a Seq, I realize in scala that a Seq may be immutable, so this might not work as I expect.
object Main extends App {
val x: Long = 122222222
val y: Option[Long] = Some(133333333)
// val y: Option[Long] = None
val z: Option[Long] = Some(144444444)
val users: Seq[Long] = Seq(x)
if (y.isDefined) users.appended(y)
if (z.isDefined) users.appended(z)
println(users)
println(users.length)
}
Thanks!
CodePudding user response:
This is probably the simplest solution:
val users: Seq[Long] = Seq(x) y.toSeq z.toSeq
toSeq will turn None into Nil and Some(x) into List(x), and then you can just concatenate the lists.
CodePudding user response:
appended(value) returns a new sequence consisting of all elements of this sequence followed by value. . It doesnt change in-place.
If you want to keep the way your code looks like, you can do
var users: Seq[Long] = Seq(x) // change val to var
if (y.isDefined) users = users.appended(y.get)
if (z.isDefined) users = users.appended(z.get)
Note: This
if (y.isDefined) users = users.appended(y.get)
if (z.isDefined) users = users.appended(z.get)
could be changed to
y.foreach(users : = _)
z.foreach(users : = _)
