Tenga en cuenta la siguiente clase de caso Scala:¿Cómo se combinan los patrones de las grandes clases de casos de Scala?
case class WideLoad(a: String, b: Int, c: Float, d: ActorRef, e: Date)
patrón coincidente me permite extraer un campo y descartar otros, así:
someVal match {
case WideLoad(_, _, _, d, _) => d ! SomeMessage(...)
}
Lo que me gustaría hacer, y lo que es más relevante cuando una clase de caso tiene ~ 20 campos impares, es extraer solo unos pocos valores de una manera que no implique escribir WideLoad(_, _, _, _, _, some, _, _, _, thing, _, _, interesting)
.
Yo esperaba que argumentos nombrados podrían ayudar aquí, aunque la sintaxis siguiente no funciona:
someVal match {
case WideLoad(d = dActor) => dActor ! SomeMessage(...)
// ^---------- does not compile
}
¿Hay alguna esperanza aquí, o estoy atascado escribiendo a cabo muchos, muchos _, _, _, _
?
EDITAR: Entiendo que puedo hacer case wl @ WideLoad(...whatever...) => wl.d
, sin embargo, todavía estoy preguntando si hay sintaxis incluso más concisa que hace lo que necesita sin tener que introducir un extra val
.
incluso con 4 o 5 campos, todos los guiones hacen que sea muy difícil de leer. Una sintaxis de parámetros nombrados mejoraría mucho la legibilidad, pero hasta donde sé, todavía no existe nada como esto. –
Tenía la impresión de que las largas listas de parámetros son algo que se debe evitar en general. –
Querías decir el caso WideLoad (d == dActor) –