过程中的变量分配.Tcl



我有这个例子:

set ns [new Simulator]
set var 0
proc proc1{var}{
  set $var 2
}
proc proc2{var}{
  puts stdout $var
  # I want $var to be 2, but it is 0.
}
$ns at 1 "proc1 $var"
$ns at 5 "proc2 $var"

那么,有人能帮我吗?

您希望使用变量本身,而不是创建计时器回调时获取的内容副本。在这种情况下,不应将变量作为参数传入,而应直接引用全局变量。像这样:

# Omitting the setup parts that are identical...
proc proc1 {} {
    global var
    set var 2
}
proc proc2 {} {
    global var
    puts stdout $var
}
$ns at 1 "proc1"
$ns at 5 "proc2"

如果不说global(或用于在作用域外访问的其他命令之一,如variableupvar),则使用的变量将是过程堆栈框架的纯本地变量。

最新更新