如何在tcl脚本中创建sink(5)变量

如何在tcl脚本中创建sink(5)变量,tcl,ns2,Tcl,Ns2,我在ns2中使用了20个节点,我正在尝试使用for循环访问a(0)a(1)a(2)a(3)a(4)变量。我如何才能做到这一点 这是我的密码 for {set i 0} {$i < $val(nn)} {incr i} { set sink($i) [new Agent/LossMonitor] $ns attach-agent $n($i) $sink($i) } 只用 global sink (global只是一个特殊的upvar案例) 以(…)结尾的变量是(关联)

我在ns2中使用了20个节点,我正在尝试使用for循环访问a(0)a(1)a(2)a(3)a(4)变量。我如何才能做到这一点

这是我的密码

for {set i 0} {$i < $val(nn)} {incr i} {
    set sink($i) [new Agent/LossMonitor]
    $ns attach-agent $n($i) $sink($i)

}
只用

global sink
(global只是一个特殊的
upvar
案例)

(…)
结尾的变量是(关联)数组,不建议使用数字作为键,最好使用列表,例如

set mylist {}
# append some elements
lappend mylist "foo" "bar" "baz"
# get the 2nd element
puts [lindex $mylist 1]
# set the 3rd element to "Hello World"
lset mylist 2 "Hello World"

我只希望这个东西在带有索引的for循环中工作…作为$mylist$i,这是怎么可能的..我在NS2中使用50个节点,它只是工作而已。只要不要使用
全局节点(1)节点(2)
,使用
全局节点
并使用
$node($i)
访问它(当您使用数组时)。使用带键的数字就可以了;在这种情况下,Tcl的哈希函数实际上经过了调优,可以很好地处理.Intresting。这也适用于dicts@DonalFellows吗?
set mylist {}
# append some elements
lappend mylist "foo" "bar" "baz"
# get the 2nd element
puts [lindex $mylist 1]
# set the 3rd element to "Hello World"
lset mylist 2 "Hello World"