Уроки Tcl

Начало Уроки Tk Файлы
Статьи Уроки Tcl Гостевая книга
Предыдущий урок - #01: Вывод текста - puts

#02: Присвоение значений переменным - set

Для использования языка программирования, вам нужен способ хранения и использования данных в программе. Чтобы это сделать, следует выделить место в памяти компьютера и поместить данные, с которыми вы будете работать в это место. Данные могут быть произвольными - от массы нейтрона до эпопеи "Война и мир". Важно только как поместить данные в память и как извлечь их при необходимости.

В Tcl память резервируется когда помещаются данные в новую переменную, обратиться к этим данным можно по имени переменной.

Для создания переменной и помещения данных в неё мы используем команду set.

Если set используется с двумя параметрами, вот так:

set fruit "Яблоко"

то помещает второй аргумент ("Яблоко") в область памяти, на которую ссылается первый аргумент (fruit). Set всегда возвращает содержимое переменной, имя которой является первым аргументом. Таким образом, при выполнении set помещает второй аргумент в область памяти, на которую ссылается первый аргумент и затем возвращает второй аргумент.

Первый аргумент команды set может быть словом, как fruit или pi, или ячейка массива. Массивы будут подробно описаны позже, важно запомнить, что много данных могут быть собраны под именем одной переменной, а доступ к отдельным данным осуществляется через индекс массива. Индексация массивов в Tcl реализуется помещением индекса в скобках после названия переменной.

Set так же может использоваться с одним аргументом, в этом случае просто возвращается значение аргумента.

set имяПеременной ?значение?

  Если значение задано, то значение переменной имяПеременной
  устанавливается равным значение.

  Если имяПеременной содержит только буквы, и нет скобок,
  то это просто скалярная переменная.

  Если имяПеременной задано в форме имяПеременной(индекс),
  это ячейка ассоциативного массива.

  Set возвращает значение переменной имяПеременной.

Перед тем как продолжить чтение, запустите пример на Интерпретаторе Tcl, и посмотрите, что выводится.

Если вы посмотрите на код примера, то увидите, что в команде set первый аргумент содержит только имя переменной, тогда как в команде puts имя переменной предварено символом $.

Иногда, когда передаётся значение переменной подпрограмме, требуется чтобы подпрограмма могда изменять данные, но это бы не повлияло на главную копию. В этом случае, ставьте $ перед именем переменной, когда вызываете подпрограмму. Таким образом, в памяти создаётся копия данных, с которой работает подпрограмма. После завершения значение основной переменной не изменяется. Это называется "Передача по значению", так как передаётся именно значение переменной.

Но иногда (например, для команды set) требуется, чтобы изменилось значение переменной. В этом случае нужно передать ссылку на область памяти, где хранится значение переменной, тогда команда сможет модифицировать данные в этом месте. В Tcl это делается НЕ добавлением $ перед именем переменной. Это называется "Передача по ссылке", так как команде передаётся ссылка.

Итак, с командой set используется просто имя переменной, поэтому передаётся ссылка. Set помещает данные из второго аргумента в область памяти, на которую ссылается первый аргумент.

Однако в случае с командой puts не нужно изменять оригинальные данные, поэтому команде puts передаётся значение данных, которые будут выведены.

Измените программу в примере и переходите к следующему уроку.

Пример:

# Присвоение строкового значения переменной X
set X "Это строка"

# Присвоение числового значения переменной Y
set Y 1.24

# Вывод содержимого X и Y
puts $X
puts $Y

# Просто вывод разделителя
puts "..............................."

# В одной команде puts может быть выведено более одной переменной
set label "Значение переменной Y:"
puts "$label $Y"

Следующий урок - #03: Обработка и подстановка при группировке с помощью " "
Горбачев "Yurez" Юрий  
Хостинг от uCoz