Je suis nouveau à haxe et j'ai besoin de supprimer des éléments tout en itérant sur un dictionnaire d'éléments. Est-ce possible à Haxe?Comment faire une itération sur la carte tout en supprimant des éléments?
1
A
Répondre
3
Oui, c'est possible.
var map:Map<Int, String> = [100 => 'a', 101 => 'b', 102 => 'c'];
trace(map); // {100 => a, 101 => b, 102 => c}
for (v in map.keys()){
if (v == 101) map.remove(v);
}
trace(map); // {100 => a, 102 => c}
Vous pouvez jouer avec l'exemple à https://try.haxe.org/#AE894
0
Vous pouvez supprimer tout en boucle sur les clés de la carte.
trace("Remove every 2nd key");
for(k in myMap.keys())
{
if(k % 2 == 0)
myMap.remove(k);
}
Voir mon exemple ici: https://try.haxe.org/#d3525
Il n'y a aucune garantie que les clés '()' itérateur faire face à l'insertion/retrait (comme il est avec 'iterator()'). La plupart des cibles créent une liste ou un tableau pour 'keys()', donc ils sont sûrs, mais pas tous (c'est à dire [Java vient à l'esprit] (https://github.com/HaxeFoundation/haxe/blob/5979a08/ std/java/_std/haxe/ds/StringMap.hx # L386)). –