9
votes

If-relève variables scopées

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: xxx

une alternative est plutôt désordonné: xxx

L'alternative évidente que j'essaie d'éviter: xxx

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?


0 commentaires

3 Réponses :


20
votes

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
}


0 commentaires

6
votes

Vous pouvez utiliser une correspondance de modèle: xxx

résultat contient le résultat de x * y ou x * 2 , en fonction du fonctionnement de l'ordinateur, et x contient la valeur de DATA * 2 + 5.4345 / 2.45 comme vous le souhaitez.


0 commentaires

1
votes

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
}


0 commentaires