You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Option[Long]有定义时将其追加到Seq[Long]集合中?

问题原因
  • Scala默认使用不可变Seq,appended 方法不会修改原集合,仅返回追加元素后的新集合,现有代码没有接收方法返回值,原users变量始终是初始化的Seq(x),无法看到追加效果。
  • 直接将Option[Long]类型的y、z作为参数传入appended,元素类型不匹配,需要先提取Option中存储的Long值再执行追加操作。
正确实现

推荐优先使用函数式写法,无需手动判空,代码更简洁健壮:
利用Option可直接转为Seq的特性,Some会转为仅含一个元素的Seq,None会转为空Seq,直接拼接即可自动过滤空值:

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) ++ y.toSeq ++ z.toSeq
  
  println(users)
  println(users.length)
}

如果确实需要分步追加,可使用变量接收每次appended返回的新Seq:

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)

  var users: Seq[Long] = Seq(x)
  if (y.isDefined) users = users.appended(y.get)
  if (z.isDefined) users = users.appended(z.get)
  
  println(users)
  println(users.length)
}

内容的提问来源于stack exchange,提问作者ThomasReggi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:54:05