过程中的变量赋值。 TCL
Variable assignment inside procedures. 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
(或用于访问范围外的其他命令之一,例如 variable
或 upvar
)您使用的变量将 纯粹 局部于过程的堆栈帧。
我有这个例子:
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
(或用于访问范围外的其他命令之一,例如 variable
或 upvar
)您使用的变量将 纯粹 局部于过程的堆栈帧。