tcl:namespace
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
tcl:namespace [2023/10/12 07:43] – 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' |
- | * **namespace forget | + | ==== current ==== |
- | * **namespace import | + | <code tcl>namespace current</ |
- | * **namespace inscope | + | Renvoie le nom pleinement qualifié pour le namespace courant. Le nom actuel du namespace global est "" |
- | * **namespace origin | + | ==== 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>namespace forget ?pattern pattern ...?</code> | ||
+ | ==== 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>namespace import ?-force? ?pattern pattern ...?</code> | ||
+ | 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>namespace inscope namespace arg ?arg ...?</code> | ||
+ | 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>namespace origin command</code> | ||
+ | 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 parent ?namespace? Renvoie | + | Pour récupérer la valeur d'une variable dans le namespace, `$::[namespace |
+ | <code tcl>namespace | ||
- | 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 | + | proc doit {} { |
+ | incr [namespace | ||
+ | } | ||
- | namespace | + | proc readit {handle idx text} { |
- | ===== Exemples ===== | + | [namespace |
+ | putlog "v is now [set [namespace | ||
+ | # Notez bien l'utilisation | ||
+ | } | ||
+ | bind dcc - readme [namespace current]:: | ||
+ | }</ | ||
===== Voir aussi ===== | ===== Voir aussi ===== | ||
{{tag> | {{tag> | ||
tcl/namespace.1697096614.txt.gz · Dernière modification : 2023/10/12 07:43 de CrazyCat