评估TCL中变量的最快方法

时间:2015-05-22 18:04:46

标签: reference tcl expect evaluation

我将变量 myref 设置为:

sendEvents()

$ expect_out(缓冲区)加入 myval 的最快方法是什么?

set myref {$expect_out(buffer)}

3 个答案:

答案 0 :(得分:2)

如果您的字符串只包含变量的名称,那么最好只使用set只有一个参数:

set myref {expect_out(buffer)}
puts "The value is [set $myref]"

但是,如果你有$ 以及,那么正确的做法是使用subst(这意味着“假装这是双引号中的东西” ):

set myref {$expect_out(buffer)}
puts "The value is [subst $myref]"

选择合适的产品。

答案 1 :(得分:1)

我认为这会解决问题

set myval [subst $$myref]

$ myref首先被替换,然后我们用第二个$

替换该值

以上是我认为你想要的一个例子:

set a 12
12
set b a
a
set c [subst $$b]
12

答案 2 :(得分:1)

您无法使用$$加倍取消引用。但是,您可以使用set命令只使用一个参数来读取变量中的值。所以:

set myval [set $myref]

set语句的评估首先扩展$myref以获取$expect_out(buffer)字符串,然后这是set命令本身的参数并被评估为返回该变量名称的值。

% set a(test) hello
hello
% set name "a(test)"
a(test)
% set b [set $name]
hello