Existe açúcar sintático para vincular um valor dentro de uma função anônima em Scala?
-
08-07-2019 - |
Pergunta
Em vez de escrever
((x: Double) => (((y: Double) => y*y))(x+x))(3)
Gostaria de escrever algo como
((x: Double) => let y=x+x in y*y)(3)
Há algo como este tipo de açúcar sintático em Scala?
Solução
Na verdade, existe: chama-se "val
". : -)
({ x: Double =>
val y = x + x
y * y
})(3)
As chaves são, naturalmente, opcional aqui, eu prefiro-los para parênteses ao definir funções (afinal de contas, isso não é Lisp). A palavra-chave val
define uma nova ligação no âmbito lexical atual. O Scala não forçar os habitantes locais para definir seu próprio escopo, ao contrário de linguagens como Lisp e ML.
Na verdade, var
também funciona dentro de qualquer alcance, mas é considerado um estilo ruim para usá-lo.
Outras dicas
OK, aqui está a um forro com a ligação:
({ x:Double => val y = x + x; y * y })(3)
Felicidades
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow