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?

Foi útil?

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
scroll top