从对象中获取字段列表的最佳方法是什么?

Whats the best way of getting a list of a field from a object?

所以现在我在 scala 中有一个带有可选字段的对象列表

case class Foo(
                   id: String,
                   description: String,
                   OptionalTag: Option[String],
) 

我想要的是遍历对象列表,并且只获取存在的可选标签,我目前的做法是这样

     Tags = listOfFoos.map(foo =>
        if (foo.OptionalTag.isDefined) {
          foo.OptionalTag.get
        } else {
          ""
        }
      ).filter(_ != "" -> "")

但是我确信有更好的方法可以完成此操作然后遍历整个列表两次但我无法弄清楚。

针对您提到的具体问题,flatMap是最好的解决方案:

listOfFoos.flatMap(_.OptionalTag)

如果你想做更复杂的处理,collect是最好的选择,因为它可以同时完成filtermap的工作:

listOfFoos.collect{ case (_, _, Some(tag)) => "Tag is " + tag }