Sto imparando Scala e ho notato qualcosa sull'uso dell'istruzione return.Qual è la differenza tra l'utilizzo dell'istruzione return e l'impostazione predefinita per restituire l'ultimo valore?
Quindi, ovviamente in Scala, se non si dispone di un'istruzione di ritorno, l'ultimo valore viene restituito per impostazione predefinita. Che è grandioso. Ma se si utilizza l'istruzione return senza specificare il tipo di ritorno, Scala dice "error: method testMethod has return statement; needs result type"
Quindi questo funziona
def testMethod(arg: Int) = {
arg*2
}
ma questo dà l'errore
def testMethod(arg: Int) = {
return arg*2
}
Questo mi fa grattare il mento e vado
Mmmmmmmm ... Ci deve essere una ragione per questo.
Perché è necessaria la dichiarazione del tipo esplicito quando si utilizza un'istruzione return ma non quando si consente a Scala di restituire l'ultimo valore? Ho pensato che fossero esattamente la stessa cosa, e che le dichiarazioni di ritorno sono solo per se si desidera restituire un valore all'interno di una funzione nidificata/condizionale, ecc. (In altre parole, che un'istruzione di "ritorno" viene automaticamente inserita nell'ultimo valore dal compilatore .. se non presente altrove nel metodo)
Ma chiaramente mi sbagliavo. Sicuramente ci deve essere qualche altra differenza nell'implementazione?
Mi manca qualcosa?
ho immaginato che non viene compilato perché si sta in realtà utilizza la parola chiave 'return' e Avevo ragione. Pubblicherò la mia risposta tra un secondo. Fondamentalmente, se usi return, cercherai di dichiarare il suo tipo restituito invece di inferire il tipo restituito da solo. – Luminous