Рассмотрим следующий класс дел Scala:
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)
.
Я надеялся, что именованные аргументы могут здесь помочь, хотя следующий синтаксис не работает:
someVal match {
case WideLoad(d = dActor) => dActor ! SomeMessage(...)
// ^---------- does not compile
}
Есть ли надежда здесь, или я застрял, набирая много-много _, _, _, _
?
РЕДАКТИРОВАТЬ : я понимаю, что могу сделать case wl @ WideLoad(...whatever...) => wl.d
, но я все еще задаюсь вопросом, есть ли еще более краткий синтаксис, который делает то, что мне нужно, без необходимости вводить дополнительный val
.