Souvent, j'ai le désir de créer des variables scopées à une instruction IF. Certains calculs ne concernent que sur une déclaration «si» particulière - à polluer la portée extérieure avec des variables temporaires sent mauvais.
Ce que je voudrais faire: p> une alternative est plutôt désordonné: p> L'alternative évidente que j'essaie d'éviter: p> est quelque chose comme ça possible dans Scala? Y a-t-il une solution de contournement décente? Sinon, quelles autres langues prennent en charge une idée comme celle-ci? P> p>
3 Réponses :
Etant donné que si code> in Scala est une expression, c'est-à-dire une valeur de retour, normalement, vous définissez une certaine valeur pour le résultat de votre code> EXPRESSION. Donc, votre troisième alternative est tout simplement bien: mettez-la dans un bloc de code, c'est-à-dire val data = (whatever)
val myValue = {
val x = data*2+5.4345/2.45
val y = data/128.4
if (x*y < 10)
x*y
else
x * 2
}
Vous pouvez utiliser une correspondance de modèle: résultat code> contient le résultat de x * y code> ou x * 2 Code>, en fonction du fonctionnement de l'ordinateur, et x code> contient la valeur de DATA * 2 + 5.4345 / 2.45 code> comme vous le souhaitez. P> P>
Vous pouvez créer une étendue pour cela ...
locally {
val x = data*2+5.4345/2.45
val y = data/128.4;
if ( x*y < 10)
x * y
else
x * 2
}