Si consideri il seguente Scala caso classe:Come modellare le classi di case Scala di grandi dimensioni?
case class WideLoad(a: String, b: Int, c: Float, d: ActorRef, e: Date)
pattern matching mi permette di estrarre un campo e scartare gli altri, in questo modo:
someVal match {
case WideLoad(_, _, _, d, _) => d ! SomeMessage(...)
}
Quello che mi piacerebbe fare, e ciò che è più rilevante quando una classe di case ha ~ 20 campi dispari, consiste nell'estrarre solo alcuni valori in un modo che non implichi la digitazione di WideLoad(_, _, _, _, _, some, _, _, _, thing, _, _, interesting)
.
Speravo che args nome potrebbe aiutare qui, anche se la sintassi seguente non funziona:
someVal match {
case WideLoad(d = dActor) => dActor ! SomeMessage(...)
// ^---------- does not compile
}
C'è qualche speranza qui, o sono io bloccato digitando molti, molti _, _, _, _
?
EDIT: capisco che posso fare case wl @ WideLoad(...whatever...) => wl.d
, ma mi chiedo ancora se c'è sintassi anche terser che fa quello che mi serve senza dover introdurre un extra val
.
anche con 4 o 5 campi, tutte le sottolineature rendono piuttosto difficile da leggere. Una sintassi dei parametri con nome migliorerebbe molto la leggibilità, ma per quanto ne so non esiste ancora nulla del genere. –
Ho avuto l'impressione che gli elenchi di parametri lunghi siano qualcosa da evitare in generale. –
si intende caso WideLoad (d == dActor) –