2017-04-26 2 views
0

Je suis novice dans ce domaine et j'essayais des choses élémentaires mais je me suis retrouvé coincé dans un problème de portée variable simple.définir une portée variable scala

Dans ce code ci-dessous, je veux utiliser "article" à travers le programme et que vous voulez imprimer sa valeur. Mais pendant que j'utilise "item" dans une boucle foreach, c'est considéré comme une variable locale et sa valeur n'est pas disponible en dehors de la boucle.

Pourriez-vous s'il vous plaît laissez-moi savoir où je me trompe?

import scala.collection.immutable._ 

val set1=Set() 
val set2=Set("A","B","C") 
var item:String=null 

println(set1.isEmpty) 
println(set2.head) 
println(set2.tail) 

set2.foreach{item => if (item != "A") println(item)} 

println(item) 

Résultat:

vrai res0: Unit =() A RES1: Unit =() Set (B, C) RES2: Unit =()

B C res3: Unité =()

null // devrait être le dernier résultat de la boucle foreach

Répondre

1

Dans le foreach vous créez une nouvelle variable avec le même nom afin qu'il "ombrage" l'existence de la première item.

x => est la syntaxe pour nommer le (s) paramètre (s) transmis à la fonction anonyme qui suit.

On dirait que vous voulez quelque chose de similaire à ce ...

set2.foreach{x => item = x; if (item != "A") println(item)}