考慮下面的斯卡拉案例類:如何模式匹配大型斯卡拉案例類?
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