Losque que je démarre le bot, j'ai ce message d'erreur :
Code :
[10:18] unknown namespace in import pattern "sqlcmd::sqlconnect"
while executing
"namespace import sqlcmd::sqlconnect"
(in namespace eval "::myscript" script line 7)
Lorsque tu es dans un namespace et que tu veux adresser un autre namespace extérieur, tu dois spécifier le chemin absolu et non relatif.
La commande suivante va chercher un namespace du nom de sqlcmd dans ton namespace monscript, ce qui explique pourquoi il ne le trouve pas :
tcl
namespace import sqlcmd::sqlconnect
La syntaxe correcte est :
tcl
namespace import ::sqlcmd::sqlconnect
Vois les :: comme des / dans un chemin de répertoires, ça fonctionne pareil.
Toute l'actualité de mes scripts ici (dernière mise à jour le 14/07/2018)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
J'avais déjà fait le rapprochement des :: avec les / des répertoires, mais dans ma tête l'import/export se faisait au niveau du namespace global et non dans le namespace ou la commande est appelée donc bêtement je n'avais pas mis les :: et cette notion de namespace étant nouvelle pour moi je n'ai pas encore appréhendé entièrement la chose, par contre j'en ai bien cerné l'intérêt :)
Lors de l'utilisation des variable déclarée dans le namespace, comme ceci par exemple :
tcl
namespaceeval monscript {variable test "un test"
bind pub - !test monscript::testproc test { nick host handle chan args }{
putserv "privmsg $chan :$monscript::test"}}
Je dois impérativement appeler la variable en préfixant son nom avec le namespace ou y'a-t-il un moyen de l'appeler sans le préfixe étant donné qu'elle est utilisée à l'intérieur de son namespace ?
03/02/2010, 10:46 (Modification du message : 03/02/2010, 10:48 par MenzAgitat.)
soit tu l'appelles par $monscript::test, soit tu mets une ligne variable test au début de chaque procédure qui utilise la variable afin de l'importer et de pouvoir l'appeler $test ensuite :
tcl
namespaceeval monscript {variable test "un test"
bind pub - !test monscript::testproc test { nick host handle chan args }{
putserv "privmsg $chan :$monscript::test"}}
ou
tcl
namespaceeval monscript {variable test "un test"
bind pub - !test monscript::testproc test { nick host handle chan args }{variable test
putserv "privmsg $chan :$test"}}
Toute l'actualité de mes scripts ici (dernière mise à jour le 14/07/2018)
Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.