如何“设置”和“放置”变量,该名称由字符串和另一个变量组成?

问题描述

我试图获取一个变量值,该变量名由字符串“ a”和迭代器“ i”组成(在这个简短的示例中,我跳过了循环)。我试图用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)