我正在从文件中读取一些值,并在一个过程中将它们读取为data(signal1),data(signal2)
-read()
。
我从此proc调用另一个proc usage_12(data(signal1))
,并希望发送data(signal1)
作为参数并在usage_12(args)
proc read() {args} {
#import data from a file and store {signal1 signal2} data
usage_12 $data(signal1)
}
proc usage_12 {args} {
foreach trq $args {
#iterate for all values
}
}
想要在usage_12
中迭代data(signal1)
中的所有值
data(signal1)示例内容:
1 2 3 4 5 6
答案 0 :(得分:2)
args
是proc
的特殊变量名,您需要更改它,或表明您只想迭代第一个参数的元素:
proc usage_12 {data} {
foreach trq $data {
puts $trq ;# Just printing the value
#iterate for all values
}
}
或
proc usage_12 {args} {
foreach trq [lindex $args 0] {
puts $trq ;# Just printing the value
#iterate for all values
}
}
以上两种方法都将在自己的行上打印1到6。
答案 1 :(得分:0)
您可以为此使用array get arrayname
和array set arrayname
。通过以下步骤完成。
array get arrayname
array set arrayname $list
转换成数组
然后您就可以在proc中使用阵列副本。proc print_array {key_vals} {
array set data $key_vals
foreach key [array names data] {
puts $data($key)
}
}
array set data [list 0 sdf 1 sddsf 2 dssd]
print_array [array get data]
注意:如果要使用相同的数组,即不是数组的副本,则可以使用upvar。