Встроенные команды ТCL


foreach

        Команда цикла по элементам одного или нескольких списков.

         Синтаксис
        foreach varname list body

        foreach varlist1 list1?varlist2 list2...? body

        Описание

        Команда организует выполнение цикла, в котором переменные цикла последовательно принимают все значения из списков значений. В простейшем случае имеется одна переменная цикла varname и один список значений list для присвоения переменной цикла. Аргумент body есть скрипт Tcl. Для каждого элемента списка list, по очереди с первого до последнего, foreach присваивает содержимое очередного элемента списка переменной varname и затем вызывает интерпретатор Tcl для исполнения body.

        В общем случае в команде может быть указано несколько списков значений (например, list1 и list2), и каждый из них может быть связан с одной переменной или со списком переменных цикла (например, varlist1 и varlist2). Во время каждой итерации переменные каждого списка переменных принимают значения последовательных элементов соответствующего списка значений. Значения из списков значений используются последовательно от первого до последнего, и каждое значение используется только один раз. Общее число итераций выбирается таким, чтобы использовать все значения из всех списков значений. Если список значений не содержит достаточного числа значений для всех связанных с ним переменных цикла, вместо недостающих элементов используются пустые значения.

        Внутри скрипта body можно использовать команды break и continue, аналогично команде for.

        Команда foreach возвращает пустую строку.

        Примеры
        В цикле используются переменные цикла i и j для цикла по элементам одного списка:

        set х {}

        foreach {i j} {a b с d е f} {

        lappend x $j $i

        }


        В результате величина x равна b a d с f е.

        При вычислении цикла используются три итерации.

        В цикле переменные цикла i и j используются для различных списков значений.

        set х {}

        foreach i {а b с} j {d е f g} {

        lappend x $i $j

        }


        В результате величина x равна a d b e с f {} g.

        При вычислении цикла используются четыре итерации

        Обе предыдущие формы скомбинированы в следующем цикле:

        set X {}

        foreach i {a b с} {j k} {d e f g} {

        lappend x $i $j $k

        }


        В результате величина x равна a d e b f g с {} {}.

        При вычислении цикла используются три итерации.
Hosted by uCoz