我试图在tcl中以表格格式打印数据.假设我有三个数组: -
GOLD, TEST, DIFF它有一些价值.我想以下列格式打印: -
GOLD TEST DIFF
----------- -------- ---------
1 Hello Hi
2 Stack Format
3个用于
4个TCL打印的人
你们想建议一下吗?
RHS*_*ger 15
我会使用format命令结合foreach来完成你所要求的.我假设你实际上有3个列表,而不是3个数组,因为看起来gold,test,diff的值在某种程度上彼此相关.
set goldList {1 2 3 4}
set testList {Hello Stack Guys TCL}
set diffList {Hi Format for print}
set formatStr {%15s%15s%15s}
puts [format $formatStr "GOLD" "TEST" "DIFF"]
puts [format $formatStr "----" "----" "----"]
foreach goldValue $goldList testValue $testList diffValue $diffList {
puts [format $formatStr $goldValue $testValue $diffValue]
}
# output
GOLD TEST DIFF
---- ---- ----
1 Hello Hi
2 Stack Format
3 Guys for
4 TCL print
Run Code Online (Sandbox Code Playgroud)
下面的代码可以使用单个 foreach 循环完成您想要的操作。不需要创建临时列表 - 假设您有数组的公共索引(您没有指定)。
array set GOLD {a 1 b 2 c 3 d 4}
array set TEST {d TCL c Guys b Stack a Hello}
array set DIFF {a Hi c for b Format d print}
foreach idx [lsort [array names GOLD]] {
puts "$GOLD($idx)\t$TEST($idx)\t$DIFF($idx)"
}
Run Code Online (Sandbox Code Playgroud)
如果您没有数组的通用索引(那么我想知道打印表的实用性),您可以这样做(尽管相对顺序未定义):
foreach {gidx gval} [array get GOLD] {tidx tval} [array get TEST] {didx dval} [array get DIFF] {
puts "$gval\t$tval\t$dval"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18172 次 |
| 最近记录: |