Как проверить, существует ли элемент list в TCL?

скажем, у меня есть список 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
}

но швы это не работает. Как мне это сделать? правильно? Это нормально, чтобы проверить if {[lindex $myList 6]] eq""}

2 ответов


Я нашел этот вопрос, потому что я хотел проверить, если список содержит определенный элемент, а не просто проверка длины списка.

чтобы увидеть, существует ли элемент в списке, используйте lsearch функция:

if {[lsearch -exact $myList 4] >= 0} {
    puts "Found 4 in myList!"
}

на lsearch функция возвращает индекс первого найденного элемента или -1 Если данный элемент не найден. Через -exact, -glob (по умолчанию) или -regexp параметры, тип рисунка поиск можно указать.


почему бы вам не использовать llength чтобы проверить длину списка:

if {[llength $myList] == 6} {
    # do something
}

конечно, если вы хотите проверить элемент по определенному индексу, затем использовать lindex чтобы получить этот элемент и проверить это. например,if {[lindex $myList 6] == "something"}

ваш код с помощью info exists не работает, потому что info exists команда проверяет, существует ли переменная. Таким образом, вы в основном проверяете, есть ли переменная, имя которой равно значению, возвращаемому [lindex $myList 6].