Материал из IRC клиент KVIrc.
Операторы это такие же команды, как и все остальные. Все операторы работают с локальными и глобальными переменными. Общий синтаксис оператора это:
<левый операнд> <оператор> [правый операнд]
где <левый операнд> это переменная, а [правый операнд] - переменная, константа или некоторое выражение. Некоторые операторы не используют [правый операнд] и их действие распространяется напрямую на <левый операнд>.
Содержание |
[править] Оператор присвоения
Оператор присвоения - это самый известный из операторов. В KVS он работает аналогично тому, как это происходит в любом другом языке программирования. Синтаксис:
<цель> = <значение>
<цель> должна быть переменной, <назначение> может быть любым параметром.
Если переменная <цель> не существует,она создается. Если она уже существует, то преобразуется к типу выражения <значение>.
Если значение является пустой строкой, то переменная цели уничтожается.
# Присвоение константы переменной %Tmp
%Tmp = 1
echo %Tmp
# Присвоение строковой константы переменной %Tmp
%Tmp = some string
echo %Tmp
# Присвоение строковой константы переменной %Tmp
%Tmp = "some string with whitespace preserved"
echo %Tmp
# Присвоение одной переменной другой копирует значение
%Someothervariable = "Contents"
%Tmp = %Someothervariable
echo %Tmp
# Присвоение переменной строки переменной %z
%color = blue
%z = my eyes are %color
echo %z
# Присвоение переменной строки (с вызовом функции внутри) переменной %x
%x = the system os is $system.osname
echo %x
# Присвоение пустой строки переменной %y уничтожает %y
%x =
echo %y
# Это эквивалент предыдущему примеру
%y = ""
# Это приведет к томуже результату если функция возвратит пустой результат
%y = $function()
# Присвоение переменной строки элементу словаря
%Dict{key} = $system.osname\ian
# Уничтожение элемента массива
%mydict[23] = ""
# Копирование словаря
%anotherdict{"The key"} = "Some dummy value"
%mydict = %anotherdict
echo %mydict{"The key"}
# Это сконвертирует словарь %mydict к строковой переменной с уничтожением всего содержимого
%mydict = "some default value"
# Уничтожение всего словаря
%anotherdict =
[править] Операторы увеличения и уменьшения
Эти 2 оператора работают только с численными операндами. Синтаксис:
<переменная>++ <переменная>--
++ увеличивает значение <переменной> на 1, -- уменьшает значение <переменной> на 1.
Это эквивалентно += 1 и -= 1.
<переменная> должна существовать и содержать целочисленное значение. Если <переменная> содержит не целое число (вещественное), то оно округляется до ближайшего целого и потом уменьшается/увеличивается.
Примеры
%a=10
echo "Увеличение"
while(%a < 20)
{
echo %a
%a++
}
echo "Уменьшение"
while(%a > 10)
{
echo %a
%a--
}
echo "тестирование в цикле"
for(%a=0;%a < 10;%a++)
{
echo %a
}
[править] Арифметические операторы с присвоением
Арифметические операторы с присвоением работают только с численными операндами. Синтаксис:
<target> += <right_operand> <target> -= <right_operand> <target> *= <right_operand> <target> /= <right_operand> <target> %= <right_operand>
<target> должна быть существующей переменной с численным значением. <right_operand> также должен быть представлен числом. Учтите что если вы хотите, чтобы правый операнд был результатом некоторого математического выражения, то его нужно заключить в $(*) .
Оператор += увеличивает <target> на значение <right_operand> и сохраняет полученное значение в переменной <target>.
Оператор -= уменьшает <target> на значение <right_operand> и сохраняет полученное значение в переменной <target>.
Оператор *= умножает <target> на значение <right_operand> и сохраняет полученное значение в переменной <target>.
Оператор /= делит <target> на значение <right_operand> и сохраняет полученное значение в переменной <target>.
Оператор %= подсчитывает остаток при делении <target> на значение <right_operand> и сохраняет полученное значение в переменной <target>.
Операции деления вызывают ошибку в случае если <right_operand> равно 0.
Если оба выражения <target> и <right_operand> являются целыми числами, то результаты деления будут также округлены до целого числа. Если <target> или <right_operand> или оба выражения являются числами с плавающей точкой, то результатом также будет выражение с плавающей точкой. Примеры
%a=10
echo %a
%a+=20
echo %a
%a-=$(%a - 1)
echo %a
%a *= 10
echo %a
%a /= 21
echo %a
%a *= 20
echo %a
%a /= 21.0
echo %a
%b = 10.0
%a %= %b
echo %a
%a = 10
%b = 3
# nice trick
%a /= %b.0
echo %a
[править] Побитовые операторы с присвоением
Эти операторы работают только с целочисленными операндами. Синтаксис:
<target> |= <right_operand> <target> &= <right_operand> <target> ^= <right_operand> <target> >>= <right_operand> <target> <<= <right_operand>
<target> должна быть существующей целочисленной переменной.<right_operand> должен быть целочисленным значением. Если <target> или <right_operand> содержат значения с плавающей точкой, то они будут обрезаны до целого числа
Помните, что если вы хотите чтобы <right_operand> был результатом математического выражения, то вы должны заключить это выражение в $(*).
Оператор |= подсчитывает логическое или между <target> и <right_operand>, сохраняет результат в переменной <target>.
Оператор &= подсчитывает логическое и между <target> и <right_operand>, сохраняет результат в переменной <target>.
Оператор ^= подсчитывает логическое xor между <target> и <right_operand>, сохраняет результат в переменной <target>.
Оператор >>= сдвигает биты <target> на <right_operand> вправо, сохраняет результат в переменной <target>.
Оператор <<= сдвигает биты <target> на <right_operand> влево, сохраняет результат в переменной <target>.
Запомните что оператора "!=" не существует. Вместо него вы можете использовать %a = $(!%b).
Для операторов >>= и <<= <right_operand> должен быть положительным и целочисленным.
Примеры:
%a = 1
echo %a
%a |= 2
echo %a
%a &= 2
echo %a
%a ^= 1
echo %a
%a >>= 2
echo %a
%a <<= 1
echo %a
[править] Операторы объединения строк
Эти операторы служат для слияния строк.
Синтаксис:
<target> .= <right_operand> <target> << <right_operand> <target> <, <right_operand>
Оператор .= дописывает в конец <target> строку <right_operand>.
Оператор << если <target> не является пустой строкой, дописывает в конец <target> строку <right_operand>, разделяя строки пробелом. Если строка <target> пустая, то присваивает ей значение <right_operand>.
Оператор <, действует также как << но использует запятую в качестве разделителя.
Последние 2 оператора очень удобны при создании списков строк, разделенных пробелами или запятыми.
Примеры:
%a = ""
%a << free
echo %a
%a .= bsd
echo %a
%a << rox
echo %a
%a <, but linux is better!
echo %a