Rompere e continuare:
In un discorso su Scala , Martin Odersky ha fornito 3 motivi per non includere l'interruzione o continuare sulla diapositiva 22:
- Sono un po 'imperativi; usare meglio molte funzioni più piccole.
- Problemi su come interagire con le chiusure.
- Non sono necessari!
E poi dice: "Possiamo supportarli solo nelle biblioteche". Nella diapositiva 23, fornisce il codice che implementa break
. Sebbene non conosca abbastanza bene Scala per essere certi, sembra che lo snippet breve su quella diapositiva sia tutto ciò che è necessario per implementare break
e che continue
potrebbe essere implementato in un codice che è allo stesso modo breve.
Essere in grado di implementare cose come questa nelle biblioteche semplifica il linguaggio di base.
In "Programming in Scala, Second Edition", di Martin Odersky, Lex Spoon e Bill Venners, viene fornita la seguente spiegazione:
Potresti aver notato che non è stato menzionato break
o continue
. Scala esclude questi comandi perché non si adattano bene ai letterali delle funzioni ... È chiaro cosa continue
significa all'interno di un while
loop, ma cosa significherebbe all'interno di una funzione letterale? ... Esistono molti modi per programmare senza break
e continue
, e se si sfruttano i letterali delle funzioni, queste alternative possono spesso essere più brevi del codice originale.
Ritorno:
I rendimenti potrebbero essere considerati un po 'imperativi nello stile, poiché return è un verbo, un comando per fare qualcosa. Ma possono anche essere visti in un modo puramente funzionale / dichiarativo: definiscono quale sia il valore di ritorno della funzione (anche se, in una funzione con più ritorni, danno solo una definizione parziale).
Nello stesso libro, dicono quanto segue su return
:
In assenza di return
un'istruzione esplicita , un metodo Scala restituisce l'ultimo valore calcolato dal metodo. Lo stile raccomandato per i metodi è infatti quello di evitare di avere dichiarazioni esplicite, e soprattutto multiple return
. Invece, pensa a ciascun metodo come un'espressione che produce un valore, che viene restituito.
I metodi terminano e restituiscono un valore, anche se return
un'istruzione non viene utilizzata, quindi non possono esserci problemi con le chiusure, poiché altrimenti le chiusure non funzionerebbero.
Inoltre, non può esserci alcun problema con il meshing corretto con i letterali delle funzioni, poiché la funzione deve comunque restituire un valore.
break
e hocontinue
bisogno di altri macchinari per la pulizia. OTOHreturn
è un modo per terminare in modo ordinato una funzione e qualsiasi macchinario di pulizia è già lì comunque.