Sto costruendo un simulatore che analizza alcuni eventi da STDIN
e li "esegue". Il mio background è principalmente la programmazione funzionale in questi giorni, quindi mi è sembrato naturale fare qualcosa del genere:
data Event = Thing1 String Int | Thing2 Int | Thing3 String String Int
Parse :: String -> [Event]
Simulate :: [Event] -> [Result]
dove simulare sarebbe
case event
of Thing1 a b => compute for thing one
| Thing2 a => compute for thing two
ecc. Qual è il modo idiomatico di fare questo genere di cose in Java? Googling mi ha indirizzato verso le classi annidate e lo schema dei visitatori, ma nel mio tentativo sembra piuttosto pesante. Il tipo di cancellazione sembra essere in lotta con me, difficile. Potresti mostrarmi una descrizione di come sarebbe fatto correttamente?