2016-11-19 7 views
1

Мне действительно нужно знать атрибуты моего агента UDP в моем сценарии TCL (для печати некоторых значений и использования его для статистики), и это мой первый раз с этим языком скриптов. Я попытался использовать команду info, но я не смог ее использовать.Получить атрибуты агента в NS2

Это мой код:

#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.

ответ

1

Проблема в том, что существуют несколько систем объектов. Agent/UDP - класс OTcl, тогда как info class работает на классах TclOO. TclOO (стандартная объектная система от Tcl 8.6 и далее) довольно много новее, чем OTcl, и имеет больше возможностей (она также быстрее), но синтаксис немного отличается по деталям, поэтому мы не ожидаем, что ns-2 когда-либо будет портирован. (Существует извращенное наследие от OTcl до TclOO через XOTcl ... но синтаксис не является одной из вещей, которые сделали переход, поскольку это было сделано больше от еще одной объектной системы, [incr Tcl]. Tcl был «благословен», с чумой объектных систем.)

Документация для OTcl не самая легкая для поиска, но полезно this page, равно как и equivalent for instances. В частности, он говорит нам, что мы можем сделать самоанализ через info instproc (т.е. метод):

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

FWIW, я написал TclOO быть основной объект системы для Tcl. Он имеет своего рода семантику XOTcl и синтаксис incrTcl, за исключением мест, где синтаксис и семантика не могут быть объединены. Это также мешает еще нескольким вещам, чтобы сделать общую систему быстрее и более Tcl-ish. –

+1

Кроме того, те файлы документации, которые я ссылаюсь на выше, являются старыми. Как 19 лет. NS-2 - это единственный пользователь OTcl, который я знаю ... –