考虑下面的斯卡拉案例类:如何模式匹配大型斯卡拉案例类?
case class WideLoad(a: String, b: Int, c: Float, d: ActorRef, e: Date)
模式匹配允许我以提取一个场,并丢弃他人,就像这样:
someVal match {
case WideLoad(_, _, _, d, _) => d ! SomeMessage(...)
}
我想什么做的,更重要的是相关的时一个case类具有〜20个奇数字段,是以不涉及输入WideLoad(_, _, _, _, _, some, _, _, _, thing, _, _, interesting)
的方式仅提取几个值。
我希望评为ARGS可以帮助在这里,虽然下面的语法不工作:
someVal match {
case WideLoad(d = dActor) => dActor ! SomeMessage(...)
// ^---------- does not compile
}
是否有希望在这里,还是我坚持打字了很多,很多_, _, _, _
?
编辑:我知道我可以做case wl @ WideLoad(...whatever...) => wl.d
,但我一直在想,做什么,我需要,而不必引入额外val
是否甚至还有更简洁的语法。
,所有的下划线让它非常难以阅读。一个命名参数语法可以提高可读性,但据我所知,目前还不存在。 – 2010-08-13 06:14:11
我的印象是,长参数列表通常是可以避免的。 – 2010-08-13 07:41:15
你的意思是WideLoad(d == dActor) – 2010-08-14 03:01:44