2016-11-19 6 views
1

実際に私のTCLスクリプトの中で私のUDPエージェントの属性を知る必要があります(いくつかの値を出力して統計に使用するため)。これはこのスクリプト言語で初めてのことです。 の情報を使用しようとしましたが、使用できませんでした。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" 

は、これは私のコードです。 私が間違ったことと、エージェント/ UDPオブジェクトの属性を取得する方法を教えてください。

答えて

1

問題は複数のオブジェクトシステムがあることです。 Agent/UDPはOTclクラスであり、info classはTclOOクラスで動作します。 TclOO(Tcl 8.6以降の標準オブジェクトシステム)はOTclよりもかなり新しく、より多くの機能を備えていますが(それも高速ですが)、構文は少し違っていますので、ns-2は上に移植されました。 (OTclからXtclを介してTclOOへの歪んだ伝統がありますが、文法は、から別のオブジェクトシステム[incr Tcl]から引き出されたように、移行を行ったものの1つではありません。 )

OTclのドキュメントは見つけるのが一番簡単ではありませんが、equivalent for instancesのようにthis pageが役に立ちます。特に、それは我々がinfo instproc(つまり、メソッド)を介してイントロスペクションを行うことができますことを教えてくれる:

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

FWIW、私は、Tclのための主要なオブジェクトシステムであることをTclOOを書きました。 XOTclのセマンティクスとincrTclの構文がありますが、シンタックスとセマンティクスが融合できない場所を除きます。それはまた、システム全体をより速く、より多くのTcl-ishにするために、いくつかの点で動揺します。 –

+1

また、私が上記にリンクしたドキュメンテーションファイルは古いものです。 19歳のように。 NS-2は私が知っているOTclの_only_ユーザーです... –

関連する問題