如何在Tcl的列表中查找列表

如何在Tcl的列表中查找列表,tcl,Tcl,我想在tcl中读取一个列表,然后将每个索引处的元素与索引一起输出 例如:mylist=12{3445{567678} 我的输出应该是 0处的元素为1 1处的元素为2 2 0处的元素为34 21的元素是45 20的元素是567 2.2.1处的元素通常是678,因为您通常无法判断您的船是一个字符串还是五个元素的列表。(Tcl确实有一些内部类型信息,但它并不像您希望的那样有用。)但是如果您知道嵌套列表结构的叶子都是数字(或任何其他简单的单词),您可以这样做 测试它: set mylist {1 2 {

我想在tcl中读取一个列表,然后将每个索引处的元素与索引一起输出

例如:mylist=12{3445{567678}

我的输出应该是 0处的元素为1 1处的元素为2 2 0处的元素为34 21的元素是45 20的元素是567
2.2.1处的元素通常是678,因为您通常无法判断您的船是一个字符串还是五个元素的列表。(Tcl确实有一些内部类型信息,但它并不像您希望的那样有用。)但是如果您知道嵌套列表结构的叶子都是数字(或任何其他简单的单词),您可以这样做

测试它:

set mylist {1 2 {34 45 {567 678}}}
printGuessListStructure $mylist
打印此文件:

element 1 is at 0 element 2 is at 1 element 34 is at 2 0 element 45 is at 2 1 element 567 is at 2 2 0 element 678 is at 2 2 1 元素1位于0 元素2位于1 元素34位于2 0 元素45位于2 1 元素567位于2 0 元件678位于2 1处
关键是test
$theList eq[lindex$theList 0]
是一种适用于简单单词的测试,它允许我们避免从叶子看起来像一个单元素列表的情况下永远递归

另外,查看Tcl的内部类型没有帮助的原因是,值没有固定的类型,Tcl在内部非常积极地对待常量合并。当你看的时候,你认为是一个列表的东西可能是暂时的其他东西。专注于你的意思而不是类型可以更好地避免混淆

element 1 is at 0 element 2 is at 1 element 34 is at 2 0 element 45 is at 2 1 element 567 is at 2 2 0 element 678 is at 2 2 1