我想传递一个变量名称并使用它 在proc。里面。
问题是将参数传递给proc会将变量转换为其值:
set my_value [ list eee ttt yyy ]
proc my_proc { args } {
puts "MY ARGS IS :$args\n"
}
my_proc $my_value
MY ARGS IS :{eee ttt yyy}
我想得到:
MY ARGS IS : my_value
感谢 URI
答案 0 :(得分:5)
Tcl在语义上是严格的值传递(它的实现是pass-by-em> immutable -reference),但是你传递的值可以是一个名字(只是不要把$
放在它前面,因为对于Tcl来说总是意味着“从这个变量读取,现在”)。特别是,你会这样做:
my_proc my_value
如果您想将该名称绑定到本地变量以便您可以读取和写入它,那么您可以执行以下操作(在过程中):
proc my_proc { args } {
upvar 1 [lindex $args 0] theVar
puts "MY ARGS IS :$args"
puts "THE VARIABLE CONTAINS <$theVar>"
}
答案 1 :(得分:3)
你在想太难了。如果您希望传递my_value
,那就是您所做的:
my_proc my_value
Tcl在这方面非常简单:如果你想要名字,请使用名称,如果你想要这个值,请在名称前放一个$
。