【发布时间】:2020-08-19 08:10:49
【问题描述】:
我试图获取变量的值,该变量的名称由字符串“a”和迭代器“i”组成(在这个简短的示例中,我跳过了 for 循环)。我试图用 concat 和 append,用 [] 和 "" 来做,但没有任何效果。这个问题有解决办法吗?
set b0 0
set i 0
set a$i $b$i (here is my problem)
puts $a$i
puts 应该显示“0”
【问题讨论】:
我试图获取变量的值,该变量的名称由字符串“a”和迭代器“i”组成(在这个简短的示例中,我跳过了 for 循环)。我试图用 concat 和 append,用 [] 和 "" 来做,但没有任何效果。这个问题有解决办法吗?
set b0 0
set i 0
set a$i $b$i (here is my problem)
puts $a$i
puts 应该显示“0”
【问题讨论】:
要从名称被计算出来的变量中读取,请使用set,仅带有一个参数:
set a$i [set b$i]
puts [set a$i]
(在某种意义上,$ 是调用这种形式的set 的语法简写;实际上,$ 语法更新。)
在这种情况下,您几乎肯定最好重写代码以使用关联数组。
set b(0) 0
set i 0
set a($i) $b($i)
puts $a($i)
【讨论】:
upvar 0 为变量起别名也可以获得易于操作的名称。在某些情况下这是有道理的,但可能不是这种情况。