Romper y continuar:
En una charla sobre Scala , Martin Odersky dio 3 razones para no incluir el descanso o continuar en la diapositiva 22:
- Son un poco imperativos; mejor usar muchas funciones más pequeñas.
- Cuestiona cómo interactuar con los cierres.
- ¡No son necesarios!
Y luego dice: "Podemos apoyarlos únicamente en las bibliotecas". En la diapositiva 23, da un código que implementa break
. Aunque no conozco a Scala lo suficientemente bien como para estar seguro, parece que el fragmento corto en esa diapositiva es todo lo que se necesita para implementar break
, y eso continue
podría implementarse en un código que es igualmente corto.
Poder implementar cosas como esta en las bibliotecas simplifica el lenguaje central.
En 'Programación en Scala, segunda edición', de Martin Odersky, Lex Spoon y Bill Venners, se brinda la siguiente explicación:
Es posible que haya notado que no se ha mencionado break
o continue
. Scala omite estos comandos porque no encajan bien con los literales de función ... Está claro lo que continue
significa dentro de un while
bucle, pero ¿qué significaría dentro de un literal de función? ... Hay muchas formas de programar sin break
y continue
, y si aprovecha los literales de función, esas alternativas a menudo pueden ser más cortas que el código original.
Regreso:
Los retornos podrían considerarse un poco imperativos en el estilo, ya que el retorno es un verbo, un comando para hacer algo. Pero también se pueden ver de una manera puramente funcional / declarativa: definen cuál es el valor de retorno de la función (incluso si, en una función con múltiples retornos, solo cada uno da una definición parcial).
En el mismo libro, dicen lo siguiente sobre return
:
En ausencia de una return
declaración explícita , un método Scala devuelve el último valor calculado por el método. El estilo recomendado para los métodos es, de hecho, evitar tener return
declaraciones explícitas, y especialmente múltiples . En cambio, piense en cada método como una expresión que produce un valor, que se devuelve.
Los métodos finalizan y devuelven un valor, incluso si return
no se usa una declaración, por lo que no puede haber problemas con los cierres, ya que de lo contrario los cierres no funcionarían.
Tampoco puede haber problemas para combinar bien con los literales de función, ya que la función tiene que devolver un valor de todos modos.
break
ycontinue
necesito maquinaria de limpieza adicional. OTOHreturn
es una forma de terminar una función de manera ordenada, y cualquier maquinaria de limpieza ya está allí de todos modos.