Question

Au lieu d'écrire

((x: Double) => (((y: Double) => y*y))(x+x))(3)

je voudrais écrire quelque chose comme

((x: Double) => let y=x+x in y*y)(3)

Y a-t-il quelque chose comme cette sorte de sucre syntaxique dans Scala?

Était-ce utile?

La solution

En effet, cela s'appelle "" val ". : -)

({ x: Double =>
  val y = x + x
  y * y
})(3)

Les accolades sont bien sûr optionnelles ici, je les préfère simplement aux parenthèses lors de la définition des fonctions (après tout, ce n’est pas Lisp). Le mot clé val définit une nouvelle liaison dans la portée lexicale actuelle. Scala n'oblige pas les sections locales à définir leur propre domaine, contrairement aux langages tels que Lisp et ML.

En fait, var fonctionne également dans n'importe quelle portée, mais son utilisation est considérée comme un mauvais style.

Autres conseils

OK, voici le liner avec la liaison:

 ({ x:Double => val y = x + x; y * y })(3)

A bientôt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top