在tcl中使用变量

  • 本文关键字:变量 tcl tcl
  • 更新时间 :
  • 英文 :


我试图在tcl的其他进程中使用全局变量。

下面是一个简短的例子:

proc myname {} {
set ::name [gets stdin]
}
proc myname2 {} {
puts "your name is: $name"
}
tcl_shell> proc myname
Jhon <--- "Jhon" should be stored in varible called *name*
tcl_shell> proc myname2
your name is Jhon <-- I want something like this.

但是我仍然看到这个错误:error: cannot read "name": no such variable

我也试过这个:

proc myname {} {
global name
set name [gets stdin]
}

proc myname2 {} {
puts "your name is: $name"
}

您正在尝试读取myname2范围内的变量name:

proc myname2 {} {
puts "your name is: $name"
}

当然,在myname2函数中没有变量name。您保存到的变量是全局(::)作用域,因此您可以这样做:

proc myname2 {} {
global name
puts "your name is: $name"
}

proc myname2 {} {
puts "your name is: $::name"
}
与C/c++不同,tcl默认隐藏全局作用域。你需要有意识地从全局作用域导入变量到你的函数中。

最新更新