Los dos siguiente código genera resultado diferente:"volver" y "try-catch-finally" Evaluación de bloques de la Scala
def x = try{
true
} finally false
invocación x se true
def y:Boolean = try{
return true
} finally {
return false
}
invocan y obtiene false
la versión return
se comporta igual que Java.
Personalmente, nunca uso 'return' en scala. Pero es bueno saber cómo evalúa Scala el valor de un bloque try-catch-finally. Gracias.
Pero, ¿qué es "una devolución implícita"? – xiefei
"Retorno implícito": Tal vez la palabra incorrecta, pero lo que quise decir es que Scala usa el resultado de la última línea del bloque de código como el valor de retorno para el bloque. – Thilo
Thilo tiene razón. Poner una declaración 'return' en un bloque' finally' debe considerarse un error, y en realidad no está permitido. 'Finally' es para limpiar cosas sin importar si el cuerpo del método tiene éxito o lanza una excepción. ¡No es el lugar para decidir un valor de retorno! Por lo tanto, el cuerpo de la cláusula 'finally' se toma para evaluar' Unidad'. En su primer ejemplo, el 'falso' se convierte implícitamente en' Unidad'. –