TCL如何遍历和打印具有字符串和列表的变量的所有值

TCL如何遍历和打印具有字符串和列表的变量的所有值,tcl,Tcl,我有一个第三方API,提供以下输出: puts [GetDesc $desc " "] #prints below data #A_Name 9023212134(M) emp#121 M { 41 423 } 如何访问打印值的所有标记和列表{41 423}?输出是一个包含5项的列表,其中最后一项是包含两个元素的列表。您可以使用lindex提取列表中的元素: set var {A_Name 9023212134(M) emp#121 M { 41 423 }}; # A_N

我有一个第三方API,提供以下输出:

puts [GetDesc $desc " "] #prints below data
#A_Name 9023212134(M) emp#121 M { 41 423 }

如何访问打印值的所有标记和列表{41 423}

输出是一个包含5项的列表,其中最后一项是包含两个元素的列表。您可以使用
lindex
提取列表中的元素:

set var {A_Name 9023212134(M) emp#121 M { 41 423 }}; # A_Name 9023212134(M) emp#121 M { 41 423 }
lindex $var 0; # A_Name
lindex $var 4; # 41 423 (Note: leading and trailing spaces are preserved)
lindex $var 4 0; # 41
lindex $var 4 1; # 432

您可以使用
foreach
对结果中的值进行迭代:

foreach value [GetDesc $desc " "] {
    puts ">>> $value <<<"
}

然后你就可以很容易地单独使用
$pair\u值了。

谢谢,但是它可以编码成一个循环吗?可能会有这样一种情况,其中一个索引值可能不在那里,比如为每个索引打印它的值,如果索引处的值是一个列表,那么就遍历indexIt,在Tcl中很难回答“这是一个列表吗?”. <代码>#名称
是一个元素的列表<代码>{41 423}可以描述为8个字符的字符串。如果您知道2个元素列表是数据的最后一个元素,请使用
lindex$var end 0
@程序员抱歉,误读了问题。我以为您只需要
{41 432}
元素。有关如何循环元素,请参见Donal的答案。
lassign [GetDesc $desc " "] name code1 code2 code3 pair_of_values