我有一个Option [Seq [String]]
,我正在尝试找到将一个Option [String]
添加到该集合中的最佳方法,结果再次是Option [Seq [String]]
。如果集合为None
,但要添加的值为Some [String]
,则结果应为具有该单个值的Option [Seq [String]]
。
我想出了两种编写它的方式,本质上归结为相同的方式。我觉得必须有更好的方法来做到这一点。有什么建议吗?
val messages: Option[Seq[String]] = Some(Seq("item"))
val message: Option[String] = Some("item 2")
val opt1: Option[Seq[String]] = message match {
case Some(message) => Some(messages.map(_ :+ message).getOrElse(Seq(message)))
case None => messages
}
val opt2: Option[Seq[String]] = message
.map(msg => Some(messages.map(_ :+ msg).getOrElse(Seq(msg))))
.getOrElse(messages)
println(opt1) // Some(List(item, item 2))
println(opt2) // Some(List(item, item 2))
messages.map(_ ++ message.toSeq) orElse message.map(Seq(_))
。 - Tim