2017-03-03 6 views
0

evalは次のコードの意味は何ですか?TCLで「eval」プロシージャを使用するにはどうすればよいですか?

proc poissontraffic { src dst interval starttime } { 
    global ns_ node_ 
    set udp($src) [new Agent/UDP] 
    eval $ns_ attach-agent \$node_($src) \$udp($src) 
    set null($dst) [new Agent/Null] 
    eval $ns_ attach-agent \$node_($dst) \$null($dst) 
    set expl($src) [new Application/Traffic/Exponential] 
    eval \$expl($src) set packetSize_ 70 
    eval \$expl($src) set burst_time_ 0 
            # idle_time + pkt_tx_time = interval 
    eval \$expl($src) set idle_time_ [expr $interval*1000.0-70.0*8/250]ms 
    eval \$expl($src) set rate_ 250k 
    eval \$expl($src) attach-agent \$udp($src) 
    eval $ns_ connect \$udp($src) \$null($dst) 
    $ns_ at $starttime "$expl($src) start" 
} 
+0

あなたはevalのマニュアルページを読むのが簡単ではありませんか? – user2141046

答えて

1

evalコマンドは、引数を連結し、evalをは、Tclスクリプトとして結果の文字列をuates。連結は、各引数の両端からスペースを取り除き、それらの間の単一のスペースで結合することによって行われます。与えられたコードで

は、例えば、

eval $ns_ connect \$udp($src) \$null($dst) 

を効果$ns_$src$dstを埋めるために、再度$udp(...)$null(...)から読み出し、コマンドを実行するために、一度、置換二ラウンドを行います。

あなたはおそらくこれでそれを置き換えることができます。$ns_がマルチワード値である場合にのみ問題になるだろう

$ns_ connect $udp($src) $null($dst) 

。これは基本的にオブジェクト名が正常に動作するOTclであるため、おそらくそうではなく、すべてのevalが混乱、遅さ、および不安定さを加えることになります。

関連する問題