考虑以下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.