Здесь показаны различия между двумя версиями данной страницы.
| Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
|
help:tuples [2025/07/20 15:00] aleks_versus |
help:tuples [2025/09/28 14:51] (текущий) aleks_versus [Объединение кортежей (конкатенация) &] |
||
|---|---|---|---|
| Строка 68: | Строка 68: | ||
| </sxh> | </sxh> | ||
| + | Эта же операция используется для добавления отдельных значений в кортеж: | ||
| + | |||
| + | <sxh qsp> | ||
| + | %tpl = [1, 2, 3, 4] | ||
| + | %tpl = (%tpl & 5) | ||
| + | %tpl & ! [1,2,3,4,5] | ||
| + | </sxh> | ||
| ==== Увеличение значений кортежа + ==== | ==== Увеличение значений кортежа + ==== | ||
| Строка 140: | Строка 147: | ||
| [4, 10] / 'b' & ! ошибка о несоответствии типов данных | [4, 10] / 'b' & ! ошибка о несоответствии типов данных | ||
| </sxh> | </sxh> | ||
| + | |||
| + | ==== Отрицание кортежей (''-'' унарный минус) ==== | ||
| + | |||
| + | Общая запись: | ||
| + | |||
| + | <sxh qsp> | ||
| + | [%новый_кортеж] = -[%кортеж_1] | ||
| + | </sxh> | ||
| + | |||
| + | Эта операция эквивалентна умножению кортежа на -1. Т.е. значения всех элементов кортежа будут умножены на -1. Примеры: | ||
| + | |||
| + | <sxh qsp> | ||
| + | %tpl = -[2] & ! [-2] | ||
| + | -[5,6,7] & ! [-5,-6,-7] | ||
| + | ! a = 12 | ||
| + | -[a, a+2, a+4] & ! [-12,-14,-16] | ||
| + | -[5,6,7]+3 & ! [-2,-3,-4] | ||
| + | -([5,6,7]+3) & ! [-8,-9,-10] | ||
| + | -[1,[2,-3],-4] & ! [-1,[-2,3],4] | ||
| + | </sxh> | ||
| + | |||
| ==== Операции с присваиванием ==== | ==== Операции с присваиванием ==== | ||
| Строка 161: | Строка 189: | ||
| </sxh> | </sxh> | ||
| + | ===== Сравнение кортежей ===== | ||
| + | |||
| + | Любые [[help:expressions|операции сравнения]] можно использовать и для сравнения кортежей. При этом: | ||
| + | |||
| + | * Кортежи сравниваются поэлементно, и большим оказывается тот кортеж, элемент которого оказался большим. Примеры: <sxh qsp> | ||
| + | %one = [12, 13, 14] | ||
| + | %two = [12, 13, 99] | ||
| + | ! %one < %two т.к. 14 < 99 | ||
| + | %three = [13] | ||
| + | ! %three > %one т.к. 13 > 12 | ||
| + | </sxh> | ||
| + | * Любой непустой кортеж, всегда больше пустого кортежа. Отсюда следует, что если кортежи разной длины, можно представить недостающие элементы более короткого кортежа, как пустые элементы, а они всегда меньше непустых. Примеры: <sxh qsp> | ||
| + | %one = [12] | ||
| + | %two = [''] | ||
| + | %empty = [] | ||
| + | ! %one > %empty | ||
| + | ! %two > %empty | ||
| + | |||
| + | %three = [12, ''] | ||
| + | ! %three > %one | ||
| + | </sxh> | ||
| + | * при сравнении кортежа с числом или строкой, число или строка воспринимаются движком как кортеж из одного элемента: <sxh qsp> | ||
| + | %one = [12, 13] | ||
| + | ! %one > 12 | ||
| + | ! %one < 13 | ||
| + | ! [] < 0 т.к. [0] - не пустой кортеж | ||
| + | </sxh> | ||
| ===== Функции и операторы, работающие с кортежами ===== | ===== Функции и операторы, работающие с кортежами ===== | ||
| Строка 186: | Строка 241: | ||
| * Функция возвращает кортеж с упакованными значениями. | * Функция возвращает кортеж с упакованными значениями. | ||
| * Примеры: <sxh qsp> | * Примеры: <sxh qsp> | ||
| - | LOCAL type, name = ARRPACK('args') | + | LOCAL type, name = %ARRPACK('args') |
| ! Из массива char берём пять элементов, начиная со второго, и упаковываем в кортеж: | ! Из массива char берём пять элементов, начиная со второго, и упаковываем в кортеж: | ||
| - | %unit[123] = ARRPACK('char', 2, 5) | + | %unit[123] = %ARRPACK('char', 2, 5) |
| </sxh> | </sxh> | ||
| * ''%%UNPACKARR [$имя_массива], [%кортеж], [#начальный_индекс], [#количество]%%'' - распаковывает значения из кортежа ''[%кортеж]'' в массив ''[$имя_массива]''. | * ''%%UNPACKARR [$имя_массива], [%кортеж], [#начальный_индекс], [#количество]%%'' - распаковывает значения из кортежа ''[%кортеж]'' в массив ''[$имя_массива]''. | ||