). 在 Tcl 中-6ren">
gpt4 book ai didi

syntax - 为什么 Tcl 在调用 "set"时不在变量名前使用美元符号?

转载 作者:行者123 更新时间:2023-12-01 17:39:08 27 4
gpt4 key购买 nike

我将在这里使用 Perl 作为比较:

$foo = 5;
print $foo;

将变量 $foo 设置为 5,然后打印变量的内容(请注意,$foo 始终以 $foo 的形式访问>).

在 Tcl 中:

set foo 5
puts $foo

与 Perl 对应的功能相同。

为什么Tcl不使用“$”设置变量,而需要“$”来访问变量?为什么程序也是如此(例如proc bar {spam Egg} {...})?对我来说,Tcl 代码看起来像这样(伪代码):

"foo" = 5 # Setting a string?
puts $foo # "$foo" is not defined.

(我的评论仅反射(reflect)了似乎正在发生的事情,而不是正在发生的事情)。

我想补充的另一点是这一点的清晰度:

set foo foo

是的,我总是可以set foo "foo",但是set $foo foo不是更一致吗?

据我所知,“foo”可以是变量也可以是字符串,具体取决于具体情况,如我上一个示例所示(set foo foo = set var string),但我不明白这个语法(也许是因为我习惯了Python...)

最佳答案

我认为最初的 Tcl 只有 set 命令,因此获取变量“foo”内容的唯一方法是调用 set foo。但随着 Tcl 进入通用脚本语言领域(回想一下,Tcl 被设想为一种可嵌入语言,您可以在用 C 编写的复杂组件上使用一层薄薄的 Tcl,因此预计不会使用大量变量),认为 $varname 语法糖很有用,所以添加了它。

换句话说,Tcl 不像 Perl 那样使用“$”,其中“$”的意思是“将后面的任何内容解释为标量”,Tcl 中的“$”也不表示变量。相反,它只是“给我一个变量的值,该变量的名称由紧随其后的单词给出”的语法糖。

关于syntax - 为什么 Tcl 在调用 "set"时不在变量名前使用美元符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com