Новости

Обновление исправляет совместимость с Freenode после обновления этой сетью версии IRCd.

Вышел второй релиз-кандидат KVIrc 4.0

Ричард Столлман дал автограф проекту и пожелал успеха в разработке.

Image:Feed.png RSS

Материал из IRC клиент KVIrc.

Перейти к: навигация, поиск

Переменные в языке KVS должны начинаться с символа "%", например %var или %Var. Регистр переменной имеет значение. Также очень важно, что переменные, первая буква которой маленькая локальны. Глобальные переменные начинаются с заглавной буквы. Например:

%Var = test

Означает присваивание строки "test" глобальной переменной %Var

%var = test

Означает присваивание строки "test" локальной переменной %var. Например можно использовать:

%var = hello world
echo %var

Переменная, начинающаяся с маленькой буквы может быть сделана глобальной при использовании ключегого слова global. И, напротив, переменная, начинающаяся с заглавной буквы может быть сделана локальной с использованием ключевого слова local.

Содержание

[править] Объявление и удаление

Переменные объявляются автоматически в месте их первого использования. Например при выполнении кода

%MyVar = some funky text
%X = 2445833
%SevenSpaces = "       "

будут созданы 3 глобальные переменные. Этот кусок кода справедлив и в случае использования локальных переменных. Следующий код

%MyVar = ""
%X = %MyVar
%SevenSpaces =

уничтожает переменные путем присваивания им пустых значений. Значение необъявленной переменной приравнивается по умолчанию к пустой строке.

[править] Присвоение

Справедливы следующие способы присваивания

%number = 1st; echo this is my %number variable test
%number = 1; echo this is my %numberst variable test
%number = 1; echo this is my %number\st variable test

первый пример присваивает переменной %number значение "1st" и после этого выводит на экран строку. Вывод будет выглядеть так:

this is my 1st variable test

второй пример присваивает переменной %number значение 1, при выводе мы увидим следующее:

this is my  variable test

Это произошло потому, что команда echo будет пытаться получить значение переменной %numberst, которая ранее не была объявлена, и значит ее значение будет равно пустой строке.

Третий пример решает проблему второго примера. Символ "\" отделяет имя переменной от текста и на выводе мы получим

this is my 1st variable test

[править] Массивы

Массив это коллекция элементов, каждый из которых имеет свой уникальный индекс.

Основной синтакс для создания массива это:

%<name>[<индекс>]

<name> это имя переменной массива, которое подчиняется всем правиалм именования обычных переменных: имя, начинающееся с большой буквы, обозначает глобальный масив, начинающееся с маленькой буквы - локальный.

<индекс> должен являся целым неотрицательным числом. Он определяет, какой из элементов массива будет выбран. Также он может быть задан с помощью математического выражения или иным способом, сводящимся к вычислению целого неотрицательного числа. Первый элемент имеет индекс 0, последний индекс на единицу меньше количества элементов в массиве.

Вы можете получить длину массива при помощи функции $length(%<name>) или используя конструкцию %<name>[]#. Нет необходимости вручную определять длину массива: она определяется автоматически. Когда вы присваиваете непустую строку элементу массива с индексом INDEX, то массив автоматически увеличивается, чтобы содержать как минимум INDEX+1 элемент. Если массив не существовал перед присваиванием, то он автоматически создается.

Если при первом присваивании задан индекс больший 0, то элементы с индексами от 0 до заданного будут иметь пустые незаданные значения.

# Создает массив из 21 элемента
%Names[20]=Pragma

Для того чтобы удалить элемент из массива вы должны присвоить ему пустое значение.

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

Пожалуйста, помните, что память, занимаемая массивом, зависит от его длины. при создании массива из 10000 элементов (с индексом 9999) вы создаете 10000 переменных! (фактически как минимум ((10000 * 4) + значеняи массива) байт для x86 архитектуры).

Массив уничтожается когда он не содержит больше элементов или когда закончилась его область видимости (например при завершении функции в которой объявлен этот локальный массив)

# Создаем массив из 800 элементов
%Array[799]=test
echo %Array[]#
%Array[299]=test
echo %Array[]#
%Array[799]=
echo %Array[]#
# Теперь он содержит 300 элементов

Вы можете использовать массив как обычную переменную, используя ее полное имя без квадратных скобок, или при помощи конструкции %<name>[] которая также является проверкой (что переменная %<name> явялется массивом). использование %<name>[] таким образом покажет предупреждение, если %<name> не будет являтся массивом. Вы можете присваивать массивы друг другу:

%A = $array(10,20,30)
%B[]=%A[]
%B=%A
echo %B[200]

Когда вы передаете имя массива в команду или функцию, то она может быть интерпретирована как разделенный запятыми список, в случае если этого требует команда или функция.

%Array[0]=Pippo
%Array[1]=Pluto
%Array[2]=Paperino
echo %Array
%Array[]=undefined
echo %Array

Это полезно когда вы хотите очистить значения всех переменных:

%Array[200]=Test
echo %Array[]#
%Array[]=
echo %Array[]#

Вы можете циклически перебрать все элементы массива при помощи команды [foreach]:

%Array[0]=Pippo
%Array[1]=Pluto
%Array[2]=Paperino
foreach(%item,%Array[])echo %item

Само собой, вы можете использовать и традиционный [for] и [while] циклы:

%Array[0]=Pippo
%Array[1]=Never show this
%Array[2]=Pluto
%Array[5]=Hidden again
%Array[8]=Paperino
for(%i=0;%i < %Array[]#;%i+=2)echo Entry %i: \"%Array[%i]\";

[править] Ассоциативные массивы(словари)

Ассоциативные массивы или словари реализованы подобно хешам в perl. Основной способ объявления словаря это:

%<name>{<key>}

<name> это имя переменной словаря, которое подчиняется всем правилам именования обычных переменных: имя, начинающееся с большой буквы, обозначает глобальный массив, начинающееся с маленькой буквы - локальный.

Словарь ассоцирует строку данных со строкой-ключом. Ключ может быть любой строкой, не содержащей неэкранированного символа '}'. Ключи регистронезависимы: "key" это одно и то же что "KEY" или "KeY".

%Ages{Pragma} = 24

Это присваивание ассоциирует с ключем "Pragma" число 24 в глобальном словаре "%Ages". Если словарь до этого не существовал, он создается. Если ключ "Pragma" уже существует в словаре, то значение, ассоциированное с ним, будет заменено на 24.

Для того чтобы удалить ассоциацию, вы можете просто присвоить пустую строку:

%Ages{pragma} =

Словарь автоматически уничтожается, если он больше не содержит ассоциаций (например когда вы присваиваете пустое значение последнему ключу).

Словари могут быть использованы для симуляции массива:

%Links{21} = "http://www.kvirc.net"

Даже многомерного:

%Pixels{324.312} = 1

Запомните что в примере выше "324.312" это одна строка.

Конечно, ключ может содержать переменные или функции.

Пустой ключ означает операцию со всем словарем (как и в массивах):

Вы можете присваивать словари:

%Test2{}=%Test1{}

Можно присваивать словарю значение строки:

%Data{} = "unspecified"

Пример выше присваивает значение строки "unspecified" всем существующим ключам словаря %Data. Таким способом можно просто уничтожить весь массив. Для этого достаточно присвоить значение пустой строки всем его элементам

%Data{} =
Личные инструменты
Инструменты
Наши кнопки
Размести кнопку KVirc у себя на сайте:
www.kvirc.ru - кроссплатформенный IRC клиент с богатым графическим интерфейсом и внутренним языком скриптинга
Друзья и спонсоры
  • Fireforge.net
Linux coutner