parray foo foo("bar") = 12 >set foo(bar) 12 12 >parray foo foo("bar") -6ren">
gpt4 book ai didi

arrays - tcl 数组问题 - 带引号的键

转载 作者:行者123 更新时间:2023-12-04 23:31:15 26 4
gpt4 key购买 nike

这让我很惊讶

>set foo("bar") 12
12
>parray foo
foo("bar") = 12
>set foo(bar) 12
12
>parray foo
foo("bar") = 12
foo(bar) = 12

似乎文字 foo 与“foo”不同。但是
>string length foo
3
>string length "foo"
3

我不明白什么

最佳答案

"字符仅对 Tcl 解析器在单词开头(或以 " 开头的单词结尾,当然)是特殊的。事实上,如果你把空格放在你会得到一个错误:

% set foo("b a r") 2
wrong # args: should be "set varName ?newValue?"

如果您正在执行 string length电话, "位于单词的开头,因此很特别。如果我们添加一个额外的前导垃圾字符,我们会看到 " 的特殊性。消失了:
% string length x"bar"
6

如果你正在做一些复杂的数组索引,我认为将元素的名称放在变量本身中通常更容易,因为那样会更清楚发生了什么(通常也更容易调试):
set idx "bar"
set foo($idx) 12

关于arrays - tcl 数组问题 - 带引号的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4833306/

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