Рассмотрим следующий класс Scala case:
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
}
Есть ли какая-нибудь надежда здесь, или я застрял, набрав много, много _, _, _, _
?
EDIT. Я понимаю, что могу сделать case wl @ WideLoad(...whatever...) => wl.d
, но мне все еще интересно, существует ли даже синтаксис терминов, который делает то, что мне нужно, без необходимости вводить дополнительные val
.