【发布时间】:2020-09-21 00:30:03
【问题描述】:
所以现在我在 scala 中有一个带有像这样的可选字段的对象列表
case class Foo(
id: String,
description: String,
OptionalTag: Option[String],
)
我想要的是遍历对象列表,如果它们存在则只获取可选标签,我目前的方法是这样
Tags = listOfFoos.map(foo =>
if (foo.OptionalTag.isDefined) {
foo.OptionalTag.get
} else {
""
}
).filter(_ != "" -> "")
但是我确定有更好的方法可以做到这一点,然后遍历整个列表两次,但我无法弄清楚。
【问题讨论】:
-
val tags = foos.collect{case Foo(_,_,Some(tag)) => tag} -
listOfFoos.flatMap(_.OptionalTag)
标签: scala scala-option