Как проверить, существует ли элемент 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]
.