2016-11-19 1 views
1

En fait, j'ai besoin de connaître les attributs de mon agent UDP dans mon script TCL (pour imprimer certaines valeurs et l'utiliser pour les statistiques) et c'est la première fois que j'utilise ce langage. J'ai essayé d'utiliser la commande info mais je n'ai pas réussi à l'utiliser.Obtenir les attributs d'un agent dans NS2

Ceci est mon code:

#Setup a UDP connection 
set udp [new Agent/UDP] 
puts [$udp info class] # Work and print "Agent/UDP" 
puts [info class variables Agent/UDP] #Fail with the error "Agent/UDP does not refer to an object" 

J'ai essayé avec:

puts [info class variables udp] #Fail (same error) 
puts [info class variables $udp] #Error : _o87 does not refer to an object 

Aucun résultat. Pouvez-vous me dire ce que j'ai fait de mal et comment obtenir les attributs de mon objet Agent/UDP.

Répondre

1

Le problème est qu'il existe plusieurs systèmes d'objets. Agent/UDP est une classe OTcl, tandis que info class fonctionne sur les classes TclOO. TclOO (le système d'objet standard à partir de Tcl 8.6) est beaucoup plus récent que OTcl et a plus de fonctionnalités (il est aussi plus rapide) mais la syntaxe est un peu différente dans les détails, donc nous ne nous attendons pas à ce que ns-2 porté plus de. (Il y a un héritage tordu de OTcl à TclOO via XOTcl ... mais la syntaxe n'est pas l'une des choses qui ont fait la transition, car cela a été tiré plus de un autre système objet, [incr Tcl]. avec un fléau de systèmes d'objets.)

La documentation pour OTcl n'est pas la plus facile à trouver, mais this page est utile, tout comme le equivalent for instances. En particulier, il nous dit que nous pouvons faire l'introspection par le info instproc (par exemple, méthode):

set udp [new Agent/UDP] 
puts [$udp info vars] 
puts [$udp info commands] 
+1

FWIW, je l'ai écrit TclOO être le système principal d'objet pour Tcl. Il a en quelque sorte la sémantique de XOTcl et la syntaxe de incrTcl, à l'exception des endroits où la syntaxe et la sémantique n'ont pas pu être fusionnées. Il remue également dans quelques autres choses pour rendre le système global plus rapide et plus facile. –

+1

En outre, les fichiers de documentation auxquels je suis lié ci-dessus sont anciens. Comme 19 ans. NS-2 est l'utilisateur _only_ d'OTcl gauche que je connais de ... –