gpt4 book ai didi

scala - 仅当模式匹配时才产生

转载 作者:行者123 更新时间:2023-12-03 22:51:38 28 4
gpt4 key购买 nike

我正在基于循环和模式匹配构建不同案例类对象的列表。 我想排除(跳过)符合默认情况的项目 (基本上过滤列表,并在一步中映射到类型)。

我可能对 Scala 太陌生,无法看到所有的可能性。我的尝试:

    val events = for (ev <- data ) yield {

ev.sport match {
case "FOOTBALL" => new FootballEvent(ev)
case "SOCCER" => new SoccerEvent(ev)
case _ => None
}

}

之后我可以过滤列表,但我怀疑有一些奇特的 Scala 方法可以做到这一点:)

如果您对如何最好地完成此操作有任何想法,请告诉我!

最佳答案

并不是它是 yield 语法,而是您可以将 collect 与模式匹配一​​起使用:

val events = data.collect { ev => ev.sport match {
case "FOOTBALL" => new FootballEvent(ev)
case "SOCCER" => new SoccerEvent(ev)
}}

不像更广为人知的 .map.foreach它不会在“其他”情况下失败,而只会丢弃不匹配的项目。

关于scala - 仅当模式匹配时才产生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122322/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com