如何在Tcl的列表中查找列表
我想在tcl中读取一个列表,然后将每个索引处的元素与索引一起输出 例如:mylist=12{3445{567678} 我的输出应该是 0处的元素为1 1处的元素为2 2 0处的元素为34 21的元素是45 20的元素是567如何在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 {
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