Appena iniziato su Scala Actors. Il Scala website dice:Scala attori: se la reazione non ritorna mai, perché ha bisogno di essere in un ciclo {}, e perché non mentre (vero) funziona?
operazioni della discussione-bloccanti possono essere evitati utilizzando
react
aspettare per nuovi messaggi (il ciondolo basato su eventi direceive
). Tuttavia, c'è un prezzo da pagare (in genere piccolo):react
non restituisce mai....
noti che usare
react
all'interno di un ciclowhile
non funziona! Tuttavia, poiché i loop sono comuni, esiste un supporto speciale per la libreria nel modulo di una funzioneloop
. Può essere utilizzato in questo modo:
loop {
react {
case A => ...
case B => ...
}
}
Ora sto confuso - sembra che ci sia una contraddizione:
a) Se react
mai restituisce, allora qual è il punto di metterlo in un ciclo ?
b) Poiché loop
esegue più volte un blocco, come è diverso per while(true)
- il motivo per cui non si while
lavoro, e in che modo lo fa "non funziona"?
Quindi la parte mancante della spiegazione del sito Web di Scala è che 'react' non ritorna _normalmente_ ma termina comunque (forse tramite un'eccezione?) E viene quindi chiamato ripetutamente? – DNA
Non penso che sia una "parte mancante". È un dettaglio di implementazione e irrilevante per lo sviluppatore. L'informazione rilevante è che mentre (vero) non funziona. Se sei interessato ai dettagli puoi comunque guardare le fonti, lo faccio spesso per capire meglio le cose. – drexin
È forse irrilevante se segui semplicemente la ricetta, ma è stato un grosso ostacolo nella spiegazione, per me - se qualcosa ritorna o no non è un dettaglio di implementazione (se stai provando ad eseguirlo/ripeterlo) - è assolutamente fondamentale! Ho dato una rapida occhiata alle fonti prima di fare la domanda ma seguirò il tuo consiglio per scavare un po 'più a fondo ... – DNA