我想使用for循环获取ya0,ya1的值.
但是下面的代码不起作用.
set ya0 12
set ya1 16
for {set i 0} {$i < 2} {incr i} {
puts "$ya{$i}"
}
Run Code Online (Sandbox Code Playgroud)
你快到了.
set ya0 12
set ya1 16
for {set i 0} {$i < 2} {incr i} {
puts [set ya$i]
}
Run Code Online (Sandbox Code Playgroud)
这稍微简单一些,但可能不适用于您的代码:
set ya0 12
set ya1 16
foreach varname {ya0 ya1} {
puts [set $varname]
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,该set命令用于从名称在运行时之前未知的变量中获取值.
如果要从root(ya)和变量后缀/索引(0,1,...)构造变量名,array则可能很有用:
set ya(0) 12
set ya(1) 16
for {set i 0} {$i < 2} {incr i} {
puts $ya($i)
}
Run Code Online (Sandbox Code Playgroud)
有时当一个人这样做时,真正想要的是一个列表:
set ya [list 12 16]
for {set i 0} {$i < 2} {incr i} {
puts [lindex $ya $i]
}
# or (better)
foreach val $ya {
puts $val
}
Run Code Online (Sandbox Code Playgroud)
文档:for,foreach,incr,lindex,list,puts,set,variable substitution