2016-11-19 51 views
1

我實際上需要知道我的TCL腳本中UDP代理的屬性(打印一些值並將其用於統計),這是我第一次使用這種腳本語言。我試圖使用命令info,但我沒有使用它。在NS2中獲取代理的屬性

這是我的代碼:

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

沒有更多的結果:

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

我試過了。 你能告訴我我做錯了什麼以及如何獲取我的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的_only_用戶,我知道... –