2017-01-21 1 views
0

Je veux un code/quelques indices de comparaison d'un tableau avec un autre tableau. Si un élément de tableau correspond à un élément de l'autre tableau, renvoyer 0 avec l'instruction puts, sinon avec une instruction puts. J'essaie de chercher sur Internet mais ne trouve pas de choses utiles.comparaison de tableau dans TCL ns2

array set foodColor { 
    Apple red 
    Banana yellow 
    Lemon yellow 
    Carrot orange 
} 

array set citrusColor { 
     Lemon yellow 
     Orange orange 
     Lime green 
} 

# build up a list of non-citrus foods 
foreach k [array names citrusColor] { 
     if {![info exists foodColor($k)]} { 
       puts $k; 
     } 

} 

Dans ce code, la sortie affiche la valeur qui ne correspond pas aux valeurs d'un autre tableau. Mais je ne veux pas de comparaison de caractères ou de chaînes de caractères dans un tableau, je veux une comparaison de tableau complète avec l'autre tableau si la correspondance de résultat de sortie de match ne correspond pas.

+0

Veuillez ajouter plus de détails à propos de votre comparaison. par exemple, ajoutez un exemple de sortie. – x01saa

+0

Lorsque vous parcourez citrusColor, vous devez définir un indicateur indiquant quels éléments foodColor ont été vérifiés. Parcourez ensuite foodColor, en vérifiant les éléments qui n'ont pas de drapeau. –

Répondre

0

La syntaxe est la suivante array set,

array set arrayName list

définit les valeurs d'un ou plusieurs éléments dans arrayName. La liste doit avoir un formulaire comme celui renvoyé par array get, composé d'un nombre pair d'éléments . Chaque élément impaire de la liste est traité comme un élément dans arrayName, et l'élément suivant dans la liste est utilisé comme nouvelle valeur pour cet élément de tableau. Si la variable arrayName n'est pas et que la liste est vide, arrayName est créé avec une valeur de tableau vide .

Vous devriez obtenir l'erreur suivante

wrong # args: should be "array set arrayName list" 

Le code peut être réécrite comme,

array set food { 
    Apple red 
    Banana yellow 
    Lemon yellow 
    Carrot orange 
} 
array set citrus { 
     Lemon yellow 
     Orange orange 
     Lime green 
} 


foreach k [array names citrus] { 
    if {[info exists food($k)]} { 
     puts "The key '$k' is available in both arrays" 
    } 
} 

Sortie:

The key 'Lemon' is available in both arrays 
0

Voulez-vous cela?

if { [info exists citrusColor($key)] && 
    [info exists foodColor($key)] && 
    $citrusColor($key) eq $foodColor($key) 
} { 
    puts "Key $key is in both arrays with the same value" 
    return 0 
} else { 
    puts "Key $key is either missing or has a different value" 
    return 1 
}