Quebrar e continuar:
Em uma palestra sobre Scala , Martin Odersky deu três razões para não incluir uma pausa ou continuar no slide 22:
- Eles são um pouco imperativos; melhor usar muitas funções menores.
- Questões sobre como interagir com fechamentos.
- Eles não são necessários!
E ele então diz: "Nós podemos apoiá-los exclusivamente nas bibliotecas". No slide 23, ele fornece o código que implementa break
. Embora eu não conheça bem o Scala o suficiente para ter certeza, parece que o pequeno trecho desse slide é tudo o que é necessário para implementar break
e que continue
pode ser implementado em código igualmente curto.
Ser capaz de implementar coisas como essas em bibliotecas simplifica a linguagem principal.
Em 'Programming in Scala, Second Edition', de Martin Odersky, Lex Spoon e Bill Venners, a seguinte explicação é dada:
Você deve ter notado que não houve menção a break
ou continue
. Scala deixa de fora esses comandos porque eles não combinam bem com literais de função ... É claro o que continue
significa dentro de um while
loop, mas o que significaria dentro de uma literal de função? ... Existem muitas maneiras de programar sem break
e continue
, e se você tirar proveito das literais de função, essas alternativas geralmente podem ser mais curtas que o código original.
Retorna:
Retornos podem ser considerados um pouco imperativos em estilo, já que retorno é um verbo, um comando para fazer alguma coisa. Mas eles também podem ser vistos de uma maneira puramente funcional / declarativa: eles definem qual é o valor de retorno da função (mesmo que, em uma função com retornos múltiplos, apenas cada um dê uma definição parcial).
No mesmo livro, eles dizem o seguinte sobre return
:
Na ausência de qualquer return
declaração explícita , um método Scala retorna o último valor calculado pelo método. O estilo recomendado para métodos é de fato evitar return
declarações explícitas, e especialmente múltiplas . Em vez disso, pense em cada método como uma expressão que gera um valor, que é retornado.
Os métodos finalizam e retornam um valor, mesmo que uma return
instrução não seja usada, para que não haja problemas com os fechamentos, pois, caso contrário, os fechamentos não funcionariam.
Também não pode haver problema em mesclar bem com literais de função, pois a função precisa retornar um valor de qualquer maneira.
break
econtinue
preciso de algumas máquinas de limpeza adicionais. OTOHreturn
é uma maneira de finalizar ordenadamente uma função e qualquer máquina de limpeza já está lá de qualquer maneira.