假设我有一个TCL列表,并且我已将一些元素附加到我的列表中.现在我想检查是否附加了6或7个元素.
为了检查列表元素是否存在于我使用的索引所指定的位置:
if { [info exists [lindex $myList 6]] } {
#if I am here then I have appended 7 elems, otherwise it should be at least 6
}
但接缝这不起作用.我应该怎么做?正常吗?可以检查{[lindex $ myList 6]] eq""}
übe*_*sus 15
你为什么不用llength来检查列表的长度:
if {[llength $myList] == 6} {
    # do something
}
当然,如果要检查特定索引处的元素,则使用它lindex来检索该元素并进行检查.例如if {[lindex $myList 6] == "something"}
使用它的代码info exists不起作用,因为该info exists命令检查变量是否存在.所以你基本上检查是否有一个名称等于返回值的变量[lindex $myList 6].
我发现了这个问题,因为我想检查列表是否包含特定项目,而不是仅检查列表的长度.
要查看列表中是否存在元素,请使用以下lsearch函数:
if {[lsearch -exact $myList 4] >= 0} {
    puts "Found 4 in myList!"
}
该lsearch函数返回第一个找到的元素的索引,或者-1是否找不到给定的元素.通过-exact,-glob(这是默认值)或-regexp选项,可以指定模式搜索的类型.
检查 TCL 列表中是否存在的另一种方法是简单地使用“in”,例如:
if {"4" in $myList} {
    puts "Found 4 in my list"
}
它稍微干净/更具可读性!