什么是“”和{}的不同用途

时间:2013-07-23 18:01:49

标签: tcl

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

% 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,它看起来与第二个示例相同。任何人都可以告诉我这三种定义过程的方法之间的区别吗?

1 个答案:

答案 0 :(得分:2)

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

Tcl man page对此进行了解释。该单页是对该语言的非常简洁和准确的描述。