我想执行这段代码,但它不是waorking,tcl脚本如下:
set i 0
foreach pattern { tiger cat horse dog} {
set pat$i abc
puts "pat$i=${pat$i}"
set i [expr {$i + 1}]
}
Run Code Online (Sandbox Code Playgroud)
我在每个循环中想要的期望结果是:
pat0=abc
pat1=abc
pat2=abc
pat3=abc
Run Code Online (Sandbox Code Playgroud)
请帮助我找出我的错误
您可以使用单参数形式读取具有计算名称的变量set
:
set i 0
foreach pattern { tiger cat horse dog} {
set pat$i abc
puts "pat$i=[set pat$i]"
set i [expr {$i + 1}]
}
Run Code Online (Sandbox Code Playgroud)
语法$...
可以被认为是它的简写(除了不同的、更有限的解析规则,这使得编写更方便)。
或者,您可以使用upvar 0
简单的名称创建变量别名:
set i 0
foreach pattern { tiger cat horse dog} {
upvar 0 pat$i p
set p abc
puts "pat$i=$p"
set i [expr {$i + 1}]
}
Run Code Online (Sandbox Code Playgroud)
这在手术中更受青睐。
但是,您确定需要调用该变量吗?您可以使用关联数组来代替吗?这通常同样方便。
set i 0
foreach pattern { tiger cat horse dog} {
set pat($i) abc
puts "pat$i=$pat($i)"
incr i; # The incr command is *right there*
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
198 次 |
最近记录: |