0

当我想实施自己的程序时,我有一个疑问。例如,以下是可以的:

% proc + {a b} {expr $a+$b}
% + 3 4
7

但是当我们使用 "" 而不是 {} 时:

% proc + "a b" "expr $a+$b"

它会给出这个错误:

can't read "a": no such variable

同时当我们使用 \ 时,它给出了一个答案:

% proc + "a b" "expr \$a+\$b"

在这里,\ 不将 $ 视为特殊字符,然后将其视为 $a,并且看起来与第二个示例相同。谁能告诉我这三种定义proc的方法之间的区别?

4

1 回答 1

2

引号和花括号之间的根本区别在于,变量在引号内展开,而不是在花括号内展开。在最后一个示例中,当您在美元符号前面放置一个反斜杠时,它会删除美元符号的特殊性质,因此变量最初不会被扩展。

这在Tcl 手册页上都有解释。那一页是对该语言的非常简洁和准确的描述。

于 2013-07-23T19:33:34.927 回答