Как получить содержимое списка, отправленного в процедуру в Tcl? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть процедура TCL, которая выполняет вызов функции для загруженного пакета, который возвращает список. Когда я запрашиваю список с llindex для количества записей, это точно. Но когда я отправляю этот список в процедуру, которая заполняет список Tk, в списке нет записей; функция llindex утверждает, что число записей в списке равно нулю. Для части кода, в моем основном коде есть:

set ents [pw::Grid getAll -type pw::Connector]
makeWindow . $ents

В $ ents 17 элементов. Тогда в моей makeWindow процедуре у меня есть:

makeWindow {root args} {
    label $base.targetDeltaTxt -text "Target Cell:"
    entry $base.targetDelta -cursor {} -textvariable entry
    ...
    set num_cons [expr ([llength $args]-1)]
    ...
}

$ num_cons равен 1, хотя при отправке он имеет 17. Кажется, что в TCL отправка списка в процедуру объединяет все элементы списка в одну строку текста. Почему?

1 Ответ

0 голосов
/ 06 июля 2018

Вы сталкиваетесь с тем фактом, что наличие последнего параметра процедуры с именем "args" вызывает особое поведение. Смотрите https://www.tcl.tk/man/tcl8.6/TclCmd/proc.htm для деталей. Переименование параметра из args во что-либо еще, например, ents должен решить проблему.

...