Attribution de valeur à l'intérieur de la boucle forcée de Scala
Quelle est la différence entre ce code:
for(term <- term_array) {
val list = hashmap.get(term)
...
}
et:
for(term <- term_array; val list = hashmap.get(term)) {
...
}
À l'intérieur de la boucle que je vais changer la table de hachage avec quelque chose comme ça
hashmap.put(term, string :: list)
Lors de la vérification de la tête de list
il semble être obsolète d'une certaine manière lors de l'utilisation de la deuxième extrait de code.
source d'informationauteur Felipe Hummel
Vous devez vous connecter pour publier un commentaire.
De l'instanciation des variables à l'intérieur des boucles de sens que si vous voulez utiliser cette variable dans la
for
déclaration, comme:Et la raison pour laquelle votre liste est obsolète, c'est que cela se traduit par une
foreach
de l'appel, tel que:Ainsi, lorsque vous atteignez ..., votre table de hachage a déjà été changé. L'autre exemple se traduit par:
La différence entre les deux est que la première est une définition qui est créé par le filtrage et la seconde est une valeur à l'intérieur d'une fonction littérale. Voir La programmation Scala, de l'Article 23.1 Pour les Expressions:
Vous voyez une vraie différence lorsque vous compilez les sources avec
scalac -Xprint:typer <filename>.scala
:Après le code de la transformation par le compilateur, vous obtiendrez quelque chose comme ceci: