Eggdrop & Tcl

Base de connaissances eggdrop et tcl

Outils pour utilisateurs

Outils du site


tcl:namespace

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
tcl:namespace [2023/10/12 08:51] CrazyCattcl:namespace [2023/10/30 12:54] (Version actuelle) – [Exemples] CrazyCat
Ligne 47: Ligne 47:
 Recherche name soit comme commande ou variable et retourne son nom pleinement qualifié. Par exemple, si name n'existe pas dans le namespace courant mais existe dans le namespace global, cette commande retourne un nom pleinement qualifié dans le namespace global. Si la commande ou variable n'existe pas, cette commande retourne une chaîne vide. Si la variable a été créée mais non définie, tel qu'avec la commande variable ou au travers d'une trace sur la variable, cette commande renverra le nom pleinement qualifié de la variable. Si aucun flag n'est donné, name est traité comme un nom de commande. Voir la section RÉSOLUTION DE NOM ci-dessous pour une explication des règles concernant la résolution de nom. Recherche name soit comme commande ou variable et retourne son nom pleinement qualifié. Par exemple, si name n'existe pas dans le namespace courant mais existe dans le namespace global, cette commande retourne un nom pleinement qualifié dans le namespace global. Si la commande ou variable n'existe pas, cette commande retourne une chaîne vide. Si la variable a été créée mais non définie, tel qu'avec la commande variable ou au travers d'une trace sur la variable, cette commande renverra le nom pleinement qualifié de la variable. Si aucun flag n'est donné, name est traité comme un nom de commande. Voir la section RÉSOLUTION DE NOM ci-dessous pour une explication des règles concernant la résolution de nom.
 ===== Exemples ===== ===== Exemples =====
 +Dans la plupart des scripts, il est intéressant de ne pas utiliser le nom du namespace en dur((hard-coded)). On utilise donc souvent `[namespace current]` pour accéder au nom du namespace en cours, par exemple pour appeler une procédure de ce namespace dans un [[:tcl:tcl_eggdrop:bind]].
  
 +Pour récupérer la valeur d'une variable dans le namespace, `$::[namespace current]::variable` ne marche pas, il faut utiliser la particularité de [[:tcl:set]] qui retourne la valeur de l'élément visé si on ne lui passe pas d'argument:
 +<code tcl>namespace eval myns {
 +
 +   variable v
 +
 +   proc doit {} {
 +      incr [namespace current]::v 1
 +   }
 +
 +   proc readit {handle idx text} {
 +      [namespace current]::doit
 +      putlog "v is now [set [namespace current]::v]"
 +      # Notez bien l'utilisation de set
 +   }
 +
 +   bind dcc - readme [namespace current]::readit
 +}</code>
 ===== Voir aussi ===== ===== Voir aussi =====
 {{tag>tcl Namespace incomplete}} {{tag>tcl Namespace incomplete}}
  
tcl/namespace.1697100665.txt.gz · Dernière modification : 2023/10/12 08:51 de CrazyCat