|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Victor Wagner 2:5020/400 02 Sep 2004 16:27:07 To : Eduard Y Zozulya Subject : Re: Буквари: Программирование в X Window -------------------------------------------------------------------------------- Eduard Y Zozulya <doro@doro.poltava.ua> wrote: >>perl и map-ы в понимании C++. Их только по недоразумению >>назвали array. В 8.5 вон еще dictionary будет. EYZ>Да, Виктор, а когда примерно 8.5 выйдет ? Зачем ждать? Качай из cvs и компили. У меня DOS-овский порт уже больше года на 8.5 базируется. >>Единственная беда - нельзя список разбить на отдельные >>аргументы, не прибегнув к eval-у. Впрочем, в 8.5 это наконец >>УЖЕ пофиксили. EYZ>А как это выглядит синтаксически ? ну например так: exec сp {expand}[glob *.tcl] $target_dir В результате каждый из элементов списка, возвращенного glob передается в exec как отдельный аргумент. Или так exec $command {expand}$args >>EYZ>5) namespace - пространство имен EYZ>обычно нам доступны >>следующие области видимости переменных EYZ>- глобальная - >>локальная - внутримодульная (поправьте если EYZ>я обозвал не >>так) Ты забыл возможность выполнить код в любом из >>существующих контекстов - uplevel, namespace eval, а также >>возможость порождения подчиненных интерпретаторов, в том >>числе и "безопасных" EYZ>Да, я еще и об upvar забыл >>EYZ>в tcl мы получаем практически неограниченую возможность >>EYZ>построения областей видимости - внутри + экспорт изнутри >>с EYZ>любого количества пространств имен. Более того это >>EYZ>касается не только переменных, но и функций EYZ>6) Цикл >>foreach EYZ>foreach { a b c } { 1 2 3 4 5 6 } { # >>циклические EYZ>значения puts "$a $b $c" # >>a | b | c| EYZ>} # >>---------- # 1 2 EYZ> 3 # 4 5 6 foreach может >>гораздо больше. EYZ>если не затруднит, можно с примерами Hапример set list_of_fields {Имя Фамилия Отдел Зарплата} set handle [pg_sql "select name,last_name,dept, salary from person] set data [pg_fetch $handle] foreach field $list_of_fields value $data { puts "$field: $value" } Т.е. можно итерироваться по нескольким спискам в параллель. Причем от каждого из этих списков можно за итерацию откусывать более одного элемента. -- --- ifmail v.2.15dev5.3 * Origin: Free Net of Leninsky,45 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/15178779be969.html, оценка из 5, голосов 10
|