我这里只是拿Perl作为比较:
$foo = 5;
print $foo;
将变量$foo
设置为5,然后打印该变量的内容(请注意,$foo
始终作为$foo
访问)。
在Tcl中:
set foo 5
puts $foo
和Perl的对应物做的事情是一样的。
为什么Tcl不用"$"来设置变量,而是需要"$"来访问变量呢?
为什么过程也是这样的(例如proc bar {spam eggs} {...}
)?
对我来说,Tcl代码看起来像这样(伪代码):
"foo" = 5 # Setting a string?
puts $foo # "$foo" is not defined.
我只是表达了我所看到的情况,而不是实际发生的情况。
我想再补充一点,那就是这个问题的明确性:
set foo foo
是的,我可以始终执行set foo "foo"
,但是set $foo foo
更加一致吗?
据我所知,“foo”可以是变量或字符串,具体取决于情况,就像我上一个例子中看到的(set foo foo
= set var string
),但是我不理解这种语法(可能是因为我习惯了Python...)
$
的引入只是为了简化对[set]
特定用法的表示。 - Eric Melski$
语法是在Tcl 2中添加的;changes
文件并没有记录那么久远的历史(尽管我可以说数组是6.0版本的新增功能,而set
在3.0之前被称为var
),所以我只能凭记忆操作。 - Donal Fellows