Non è così semplice come solo omettendo la parola chiave return
. In Scala, se non esiste lo return
, l'ultima espressione viene considerata come valore di ritorno. Pertanto, se l'ultima espressione è ciò che si desidera restituire, è possibile omettere la parola chiave return
. Ma se quello che vuoi restituire è non l'ultima espressione, quindi Scala non saprai che volevi restituirlo.
Un esempio:
def f() = {
if (something)
"A"
else
"B"
}
Qui l'ultima espressione della funzione f
è un'espressione if/else che restituisce una stringa. Dato che non è stato specificato return
esplicito, Scala dedurrà che si desidera restituire il risultato di questa espressione if/else: a String.
Ora, se aggiungiamo qualcosa dopo if/else espressione:
def f() = {
if (something)
"A"
else
"B"
if (somethingElse)
1
else
2
}
Ora l'ultima espressione è un if/else un'espressione che restituisce un int. Quindi il tipo di ritorno di f
sarà Int. Se volessimo davvero restituire la stringa, allora siamo nei guai perché Scala ha nessuna idea che è quello che intendevamo. Pertanto, dobbiamo ripararlo memorizzando la stringa su una variabile e restituendola dopo la seconda espressione if/else, oppure modificando l'ordine in modo che la parte String si verifichi per ultima.
Infine, possiamo evitare la parola return
anche con un'espressione nidificato if-else come la vostra:
def f() = {
if(somethingFirst) {
if (something) // Last expression of `if` returns a String
"A"
else
"B"
}
else {
if (somethingElse)
1
else
2
"C" // Last expression of `else` returns a String
}
}
C'è ** di solito ** non è necessario per la parola chiave di restituzione, purché si rompa il codice in metodi abbastanza piccoli. – mauhiz
@mauhiz Grazie. Puoi spiegarlo per favore? Come lo farai? – Jatin
sembra che tu stia prendendo il corso Coursera Scala. tutto il meglio :) – weima