2010-07-28 5 views
7

Quelle est la bonne façon d'initialiser un tableau vide dans Tcl?Comment initialiser un tableau dans Tcl?

Je le code suivant (simplifié):

proc parseFile {filename results_array} { 
    upvar $results_array results 
    set results(key) $value 
} 

set r1 {} 
parseFile "filename" r1 

et je reçois l'erreur:

Error: can't set "results(key)": variable isn't array

Répondre

4

Vous n'initialisez pas des tableaux dans Tcl, ils apparaissent seulement lorsque vous définissez un membre :

proc stash {key array_name value} { 
    upvar $array_name a 
    set a($key) $value 
} 

stash one pvr 1 
stash two pvr 2 
array names pvr 

rendements:

two one 
+3

Si vous voulez forcer quelque chose à être un tableau, je fais souvent comme il rend le code plus lisible, vous pouvez utiliser 'array set r1 {}' et ensuite r1 est un tableau vide. – Jackson

+0

@Jackson Notez que 'array set r1 {}' ne désactive pas les valeurs existantes. –

17

Pour initialiser un tableau, utilisez "array set". Si vous voulez simplement créer l'objet tableau interne sans lui donner de valeurs, vous pouvez lui donner une liste vide comme argument. Par exemple:

array set foo {} 

Si vous voulez donner des valeurs, vous pouvez lui donner une liste correctement cité de paires clé/valeur:

array set foo { 
    one {this is element 1} 
    two {this is element 2} 
} 
0

marques set (anglais) 80

de jeu array_name (key) value

Questions connexes