2016-11-19 2 views
1

Ich muss tatsächlich die Attribute meines UDP-Agenten in meinem TCL-Skript kennen (um einige Werte zu drucken und für Statistiken zu verwenden) und dies ist das erste Mal mit dieser Skriptsprache. Ich habe versucht, den Befehl info zu verwenden, aber ich habe es nicht verwendet.Attribute eines Agenten in NS2 abrufen

Dies ist mein 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" 

Ich habe versucht, mit:

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

nicht mehr Ergebnis. Können Sie mir sagen, was ich falsch gemacht habe und wie ich die Attribute meines Agent/UDP-Objekts bekommen kann.

Antwort

1

Das Problem ist, dass es mehrere Objektsysteme gibt. Agent/UDP ist eine OTcl-Klasse, während info class auf TclOO-Klassen arbeitet. TclOO (das Standardobjektsystem ab Tcl 8.6) ist ziemlich viel neuer als OTcl und hat mehr Funktionen (es ist auch schneller), aber die Syntax ist ein bisschen anders im Detail, so dass wir nicht erwarten, dass ns-2 jemals sein wird übergangen. (Es gibt ein verdrehtes Erbe von OTcl zu TclOO über XOTcl ... aber die Syntax ist nicht eines der Dinge, die den Übergang gemacht haben, da das mehr von einem anderen Objektsystem, [incr Tcl] gezeichnet wurde. Tcl wurde "gesegnet" mit einer Plage von Objektsystemen.)

Dokumentation für OTcl ist nicht die einfachste zu finden, aber this page ist hilfreich, wie die equivalent for instances ist. Insbesondere ist es sagt uns, dass wir Selbstbeobachtung über die info instproc tun kann (das heißt Methode):

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

FWIW, schrieb ich TclOO das Hauptobjekt System für Tcl zu sein. Es hat eine Art Semantik von XOTcl und die Syntax von incrTcl, außer an Stellen, an denen die Syntax und die Semantik nicht verschmolzen werden konnten. Es rührt auch in ein paar anderen Dingen, um das Gesamtsystem schneller und mehr Tcl-ish zu machen. –

+1

Diese Dokumentationsdateien, auf die ich oben verlinke, sind ebenfalls alt. Wie 19 Jahre alt. NS-2 ist der einzige Benutzer von OTcl, den ich kenne ... –

Verwandte Themen