什么是一个双美元用括号和大括号在TCL下面的是什么意思?(What does a double do

2019-10-19 07:01发布

什么是下面这行吗?

eval "set abc \$${SID}(abc)"

我试

我知道$someArray(index)是阵列如何在TCL访问。 所以

set abc $SID(abc)

期望abc是数组的一个关键SID (据我所知abc可以是任何东西,如TCL所有的数组是关联的。这是正确的吗?)。 然后它将值以abc

因此,在伪代码该行不

Ensure: SID is array, abc exists

abc <- SID[abc]

但为什么身边有括号SID ? 为什么eval

Answer 1:

括号是用来防止超出需要更多的字符变量替换。

$variableonetwo

指的是一个变量命名variableonetwo并返回它的价值:

% set variableonetwo 1
% puts $variableonetwo
1

但...

${variableone}two

指变量命名variableone和字符串two

% set variableone 1
% puts ${variableone}two
1two
% puts $variableonetwo
can't read "variableonetwo": no such variable

eval用于...好评估/执行命令。

eval "set abc \$${SID}(abc)"

将试图评估以下,如果$SID的值为foo这是一个数组。

set abc $foo(abc)

使用的优点eval这里要说的是,你能有不是一个而是两个换人在同一直线上,第一个是代$SID到一个数组名,第二个是从数组值(所提供的密钥)。



文章来源: What does a double dollar with parentheses and braces following mean in TCL?
标签: tcl