题
什么是下面这行吗?
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
?
括号是用来防止超出需要更多的字符变量替换。
$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?