相关疑难解决方法(0)

如何模式匹配大型Scala案例类?

考虑以下Scala案例类:

case class WideLoad(a: String, b: Int, c: Float, d: ActorRef, e: Date)
Run Code Online (Sandbox Code Playgroud)

模式匹配允许我提取一个字段并丢弃其他字段,如下所示:

someVal match {
    case WideLoad(_, _, _, d, _) => d ! SomeMessage(...)
}
Run Code Online (Sandbox Code Playgroud)

我想做什么,以及当一个案例类有大约20个奇数字段时更有意义的是,以一种不涉及输入的方式提取几个值WideLoad(_, _, _, _, _, some, _, _, _, thing, _, _, interesting).

我希望命名args可以在这里提供帮助,尽管以下语法不起作用:

someVal match {
    case WideLoad(d = dActor) => dActor ! SomeMessage(...)
    //              ^---------- does not compile
}
Run Code Online (Sandbox Code Playgroud)

这里有什么希望,还是我不知道输入很多很多_, _, _, _

编辑:我明白我能做到case wl @ WideLoad(...whatever...) => wl.d,但我仍然想知道是否有更复杂的语法能够满足我的需求,而无需引入额外的内容val.

scala pattern-matching

40
推荐指数
2
解决办法
9731
查看次数

标签 统计

pattern-matching ×1

scala ×1