我实际上需要在我的TCL脚本中知道我的UDP代理的属性(打印一些值并将其用于统计),这是我第一次使用这种脚本语言。我尝试使用命令 info ,但我没有使用它。
这是我的代码:
#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"
我尝试过:
puts [info class variables udp] #Fail (same error)
puts [info class variables $udp] #Error : _o87 does not refer to an object
没有更多结果。 你能告诉我我做错了什么以及如何获取我的Agent / UDP对象的属性。
答案 0 :(得分:1)
问题在于有多个对象系统。 Agent/UDP
是一个OTcl类,而info class
是在TclOO类上运行的。 TclOO(从Tcl 8.6开始的标准对象系统)比OTcl更新,并且具有更多功能(它也更快)但是语法在细节上有点不同所以我们不期望ns-2到永远被移植过来。 (通过XOTcl从OTcl到TclOO有一个扭曲的遗产...但语法不是转换的事情之一,因为它更多来自另一个对象系统,[incr Tcl Tcl被“诅咒”了对象系统的瘟疫。)
OTcl的文档不是最容易找到的,但this page是有用的,equivalent for instances也是如此。特别是,它告诉我们可以通过info
instproc(即方法)进行内省:
set udp [new Agent/UDP]
puts [$udp info vars]
puts [$udp info commands]