J'essaie d'accomplir une tâche très simple à Groovy, mais je n'arrive pas à la faire fonctionner. J'essaie simplement de parcourir en boucle un objet de la carte et d'imprimer la clé et la valeur, mais ce code ne fonctionne pas.
// A simple map
def map = [
iPhone : 'iWebOS',
Android: '2.3.3',
Nokia : 'Symbian',
Windows: 'WM8'
]
// Print the values
for (s in map) {
println s + ": " + map[s]
}
J'essaie d'obtenir que la sortie ressemble à ceci:
iPhone: iWebOS
Android: 2.3.3
Nokia: Symbian
Windows: WM8
Quelqu'un pourrait-il s'il vous plaît expliquer comment faire cela?
Assez simple avec une fermeture:
def map = [
'iPhone':'iWebOS',
'Android':'2.3.3',
'Nokia':'Symbian',
'Windows':'WM8'
]
map.each{ k, v -> println "${k}:${v}" }
Vous pouvez également utiliser une boucle for
comme indiqué dans le Groovy Docs :
def map = ['a':1, 'b':2, 'c':3]
for ( e in map ) {
print "key = ${e.key}, value = ${e.value}"
}
/*
Result:
key = a, value = 1
key = b, value = 2
key = c, value = 3
*/
Un avantage de l'utilisation d'une boucle for
par opposition à une fermeture each
est un débogage plus facile, car vous ne pouvez pas atteindre un point d'arrêt à l'intérieur d'une fermeture each
(avec Netbeans).
Lorsque vous utilisez la boucle for, la valeur de s est un élément Map.Entry, ce qui signifie que vous pouvez obtenir la clé de s.key et la valeur de s.value.
Une autre option:
def map = ['a':1, 'b':2, 'c':3]
map.each{
println it.key +" "+ it.value
}