tcl:namespace
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
tcl:namespace [2023/10/11 16:23] – créée CrazyCat | tcl:namespace [2023/10/30 12:54] (Version actuelle) – [Exemples] CrazyCat | ||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
===== Description ===== | ===== Description ===== | ||
La commande **namespace** vous permet de créer, d’accéder, | La commande **namespace** vous permet de créer, d’accéder, | ||
- | * **namespace children | + | ==== children ==== |
- | * **namespace code //script// Capture le contexte namespace courant pour une exécution ultérieure du script script. Retourne un nouveau script dans lequel script aura été englobé dans une commande namespace code. Le nouveau script a deux propriétés importantes. D' | + | <code tcl>namespace children ?namespace? ?pattern?</code> |
- | * **namespace current** Renvoie le nom pleinement qualifié pour le namespace courant. Le nom actuel du namespace global est "" | + | Renvoie une liste de tous les namespaces enfants qui appartiennent à namespace. Si namespace n'est pas spécifié, alors les enfants sont renvoyés pour le namespace courant. Cette commande retourne des noms pleinement qualifiés, qui commencent avec ::. Si l' |
- | * **namespace delete | + | ==== code ==== |
- | * **namespace eval //namespace arg ?arg ...?//** Active un namespace appelé // | + | <code tcl>namespace code script</code> |
- | * **namespace export | + | Capture le contexte namespace courant pour une exécution ultérieure du script script. Retourne un nouveau script dans lequel script aura été englobé dans une commande namespace code. Le nouveau script a deux propriétés importantes. D' |
+ | ==== current ==== | ||
+ | <code tcl>namespace current</ | ||
+ | Renvoie le nom pleinement qualifié pour le namespace courant. Le nom actuel du namespace global est "" | ||
+ | ==== delete ==== | ||
+ | <code tcl>namespace delete ?namespace namespace ...?</code> | ||
+ | Chaque namespace // | ||
+ | ==== eval ==== | ||
+ | <code tcl>namespace eval namespace arg ?arg ...?</code> | ||
+ | Active un namespace appelé // | ||
+ | ==== export ==== | ||
+ | <code tcl>namespace export ?-clear? ?pattern pattern ...?</code> | ||
+ | Spécifie quelles commandes sont exportées par un namespace. Le commandes exportées sont celles qui peuvent être plus tard importées dans un autre namespace en utilisant une commande namespace import. L’ensemble des commandes définies dans un namespace et des commandes que le namespace a précédemment importé peut être exporté par un namespace. La commandes n'ont pas à être définies à l' | ||
+ | <code tcl> | ||
+ | ==== forget ==== | ||
+ | Re-déplace les commandes précédemment importées d'un namespace. Chaque pattern est un nom qualifié tel que foo::x ou a::b::p*. Les noms qualifiés contiennent des ::s et qualifient un nom avec le nom d'un ou plusieurs namespaces. Chaque pattern est qualifié avec le nom d'un namespace exportant et peut avoir des caractères spéciaux glob-style dans le nom de commande à la fin du nom qualifié. Les caractères glob ne peuvent pas apparaître dans un nom de namespace. Cette commande trouve en premier les commandes exportées correspondantes. Elle vérifie ensuite si une ou plusieurs de ces commandes ont été précédemment importées par le namespace courant. Si c'est le cas, cette commande efface les commandes importées correspondantes. Ceci annule effectivement l' | ||
+ | ==== import ==== | ||
+ | <code tcl> | ||
+ | Importe des commandes dans un namespace. Chaque pattern est un nom qualifié comme foo::x ou a::p*. Ainsi, elle inclut le nom d'un namespace exportant et peut avoir des caractères spéciaux glob-style dans le nom de commande à la fin du nom qualifié. Les caractères glob ne peuvent pas apparaître dans un nom de namespace. Toutes les commandes qui correspondent à une chaîne pattern et qui sont couramment exportées de leurs namespace sont ajoutées au namespace courant. Ceci est fait par création d'une nouvelle commande dans le namespace courant qui pointe vers la commande exportée dans son namespace original; quand la nouvelle commande importée est appelée, elle appelle la commande exportée. Cette commande normalement retourne une erreur si une commande importée rentre en conflit avec une commande existante. Néanmoins, si l' | ||
+ | == inscope ==== | ||
+ | <code tcl> | ||
+ | Exécute un script dans le contexte d'un namespace particulier. Cette commande n'est pas sensée être utilisé directement par les programmeurs; | ||
+ | ==== origin ==== | ||
+ | <code tcl> | ||
+ | Renvoie le nom pleinement qualifié de la commande originale à laquelle la commande importée command se réfère. Quand une commande est importée dans un namespace, une nouvelle commande est créée dans ce namespace qui pointe vers la commande actuelle dans le namespace exportant. Si une commande est importée dans une séquence de namespaces a, b,...,n où chaque namespace successif importe juste la commande du précédent namespace, cette commande retourne le nom pleinement qualifié de la commande originale dans le premier namespace, a. Si command ne se réfère pas à une commande importée, le propre nom pleinement qualifié de la commande est renvoyé. | ||
+ | ==== parent ==== | ||
+ | <code tcl> | ||
+ | Renvoie le nom pleinement qualifié du namespace parent de namespace. Si namespace n'est pas spécifié, le nom pleinement qualifié du parent du namespace courant est renvoyé. | ||
+ | ==== qualifiers ==== | ||
+ | <code tcl> | ||
+ | ==== tail ==== | ||
+ | <code tcl> | ||
+ | Renvoie le simple nom à la fin d'une chaîne qualifiée. Les quantificateurs sont les noms de namespace séparées par ::. Pour la string :: | ||
+ | ==== which ==== | ||
+ | <code tcl> | ||
+ | Recherche name soit comme commande ou variable et retourne son nom pleinement qualifié. Par exemple, si name n' | ||
+ | ===== 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 [[: | ||
- | namespace forget ?pattern pattern ...? Re-déplace les commandes précédemment importées | + | Pour récupérer la valeur |
+ | <code tcl>namespace | ||
- | namespace import ?-force? ?pattern pattern ...? Importe des commandes dans un namespace. Chaque pattern est un nom qualifié comme foo::x ou a::p*. Ainsi, elle inclut le nom d'un namespace exportant et peut avoir des caractères spéciaux glob-style dans le nom de commande à la fin du nom qualifié. Les caractères glob ne peuvent pas apparaître dans un nom de namespace. Toutes les commandes qui correspondent à une chaîne pattern et qui sont couramment exportées de leurs namespace sont ajoutées au namespace courant. Ceci est fait par création d'une nouvelle commande dans le namespace courant qui pointe vers la commande exportée dans son namespace original; quand la nouvelle commande importée est appelée, elle appelle la commande exportée. Cette commande normalement retourne une erreur si une commande importée rentre en conflit avec une commande existante. Néanmoins, si l' | + | |
- | namespace inscope namespace arg ?arg ...? Exécute un script dans le contexte d'un namespace particulier. Cette commande n'est pas sensée être utilisé directement par les programmeurs; | + | |
+ | incr [namespace | ||
+ | } | ||
- | namespace origin command Renvoie le nom pleinement qualifié de la commande originale à laquelle la commande importée command se réfère. Quand une commande est importée dans un namespace, une nouvelle commande est créée dans ce namespace qui pointe vers la commande actuelle dans le namespace exportant. Si une commande est importée dans une séquence de namespaces a, b,...,n où chaque namespace successif importe juste la commande du précédent namespace, cette commande retourne le nom pleinement qualifié de la commande originale dans le premier namespace, a. Si command ne se réfère pas à une commande importée, le propre nom pleinement qualifié de la commande est renvoyé. | + | proc readit {handle idx text} { |
- | + | [namespace | |
- | namespace | + | |
- | + | # Notez bien l'utilisation | |
- | namespace qualifiers string Renvoie tous les quantificateurs namespace en tête de string. Les quantificateurs sont les noms de namespace séparées par ::. Pour la string :: | + | } |
- | + | ||
- | namespace | + | |
- | + | ||
- | namespace which ?-command? ?-variable? name 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' | + | |
- | ===== Exemples ===== | + | |
+ | bind dcc - readme [namespace current]:: | ||
+ | }</ | ||
===== Voir aussi ===== | ===== Voir aussi ===== | ||
- | {{tag> | + | {{tag> |
tcl/namespace.1697041380.txt.gz · Dernière modification : 2023/10/11 16:23 de CrazyCat