Ceci est une ancienne révision du document !
Table des matières
dict
Manipule les dictionnaires
Syntaxe
dict append dictionaryVariable key ?string ...? dict create ?key value ...? dict exists dictionaryValue key ?key ...? dict filter dictionaryValue filterType arg ?arg ...? dict filter dictionaryValue key ?globPattern ...? dict filter dictionaryValue script {keyVariable valueVariable} script dict filter dictionaryValue value ?globPattern ...? dict for {keyVariable valueVariable} dictionaryValue body dict get dictionaryValue ?key ...? dict incr dictionaryVariable key ?increment? dict info dictionaryValue dict keys dictionaryValue ?globPattern? dict lappend dictionaryVariable key ?value ...? dict map {keyVariable valueVariable} dictionaryValue body dict merge ?dictionaryValue ...? dict remove dictionaryValue ?key ...? dict replace dictionaryValue ?key value ...? dict set dictionaryVariable key ?key ...? value dict size dictionaryValue dict unset dictionaryVariable key ?key ...? dict update dictionaryVariable key varName ?key varName ...? body dict values dictionaryValue ?globPattern? dict with dictionaryVariable ?key ...? body
Description
Cette commande permet de créer des dictionnaires, sortes de tableaux associatifs (array) sans nom, mais avec des fonctionnalités supplémentaires.
Exemples
Création d'un dictionnaire :
set le_dico [dict create k1 v1 k2 v2 k3 v3]
Faute de dictionnaire, on aurait dû créer un tableau au moyen de la commande
array set le_tableau {k1 v1 k2 v2 k3 v3}
Récupération de la valeur “v2” associée à la clé “k2” :
puts [dict get $le_dico k2] ;# -> v2
Ajout de la clé k4 associée à la valeur v4 dans le dictionnaire :
dict set le_dico k4 v4 ;# k1 v1 k2 v2 k3 v3 k4 v4
Modification le la valeur associée à la clé k3 :
dict set le_dico k3 v3n ;# k1 v1 k2 v2 k3 v3n k4 v4
Suppression de la clé k2 (et de sa valeur associée)
dict unset le_dico k2 ;# k1 v1 k3 v3n k4 v4
Liste des clés
puts [dict keys $le_dico] ;# -> k1 k3 k4 puts [dict keys $le_dico *3] ;# -> k3
Une valeur-liste
dict lappend k5 v5 ;# k1 v1 k3 v3n k4 v4 k5 v5 dict lappend k5 v5a v5b ;# k1 v1 k3 v3n k4 v4 k5 {v5 v5a v5b}
Si une procédure doit accéder à un dictionnaire sans le modifier, on peut passer sa valeur. Avec un tableau, il faut toujours passer le nom :
proc get_val_dico {dico k} {return [dict get $dico $k]} proc get_val_array {arrayName k} {upvar $arrayName array; return $array($k)} puts [get_val_dico $le_dico k3] ;# -> v3n puts [get_val_array le_tableau k3] ;# -> v3