Уроки Tcl
#03: Обработка и подстановка при группировке с помощью " " |
Этот урок - первый из трёх, которые описывают как Tcl производит подстановку при обработке команды.
В Tcl обработка команды происходит в две фазы: фаза подстановки и фаза выполнения.
В фазе подстановки происходит большинство работы в Tcl программе. Интерпретатор просматривает каждое слово слева направо и, когда находится слово, которое должно быть заменено другим значением, он производит подстановку. Во время фазы выполнения компилятор обрабатывает команду и выполняет действия, указанные в команде.
Помните, что только подстановка происходит только один раз.
Интерпретатор Tcl производит следующие подстановки:
строка | выводимое значение | шестнадцатеричное значение |
---|---|---|
\a | Звуковой сигнал (звонок) | \x07 |
\b | Backspace - стирание влево | \x08 |
\f | Очистка экрана | \x0c |
\n | Новая строка | \x0a |
\r | Enter | \x0d |
\t | Tab - Табуляция | \x09 |
\v | Вертикальная табуляция | \x0b |
\ddd | Восьмеричное значение | d = 0-7 |
\xhh | Шестнадцатеричное значение | h = 0-9,A-F,a-f |
Слова в двойных кавычках или фигурных скобках обрабатываются как один аргумент. Однако, двойные кавычки и фигурные скобки действуют по-разному в фазе подстановки. В этом уроке разберём действие двойных кавычек в фазе подстановки.
Объединение слово в двойных кавычка позволяет делать замены во время фазы подстановки. Поэтому команда
заменит имя переменной на её значение и выведет всю строку.
Исключение делается для символов после обратной дроби (\), как и описано ранее. Обратная дробь отменяет подстановку для следующего символа. Это даёт возможность выводить специальные символы - $, ", [, ], {, }, \.
Запустите пример на интерпретаторе, проверьте выводимый результат. Поэксперементируйте с кодом примера и переходите к следующему заданию.
# Пример действия \ на символ $ set Z "Москва" set Z_LABEL "Столица России это: " puts "$Z_LABEL $Z" puts "$Z_LABEL \$Z" # В следующей строке не хватает \ перед $ puts "\nБен Франклин изображен на купюре $100.00" set a 100.00 puts "Вашингтона нет на купюре $a" ;# Это не то puts "Линкольна нет на купюре $$a" ;# Это правильно puts "Гамильтона нет на купюре \$a" ;# Опять не то puts "Бен Франклин на купюре \$$a" ;# Но вот так правильно puts "\n................. примеры специальных символов" puts "Табуляция\tТабуляция\tТабуляция" puts "Эта строка будет выведена\nна двух линиях" puts "А эта строка выведется\ на одной линии" |
Горбачев "Yurez" Юрий |