Инструменты пользователя

Инструменты сайта


help:tuples

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:tuples [2024/10/10 17:48]
aleks_versus проба обновления до 5.9.0
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>​ 
 +===== Функции ​и операторы, работающие с кортежами =====
  
   * ''​%%LEN([%кор])%%''​ - возвращает число элементов кортежа ''​%%[%кор]%%''​. <sxh qsp>   * ''​%%LEN([%кор])%%''​ - возвращает число элементов кортежа ''​%%[%кор]%%''​. <sxh qsp>
Строка 181: Строка 236:
   * ''​%%$STR([%кор])%%''​ - переводит кортеж в строку. <sxh qsp>   * ''​%%$STR([%кор])%%''​ - переводит кортеж в строку. <sxh qsp>
 *pl $STR([5,​7,'​a'​]) &! на экране увидим [5,​7,'​a'​] *pl $STR([5,​7,'​a'​]) &! на экране увидим [5,​7,'​a'​]
 +</​sxh>​
 +  * ''​%%%ARRPACK([$имя_массива],​ [#​начальный_индекс],​ [#​количество])%%''​ - упаковывает массив ''​[$имя_массива]''​ в кортеж.
 +    * Можно указать,​ сколько элементов ''​[#​количество]''​ упаковать в кортеж,​ и с какого элемента ''​[#​начальный_индекс]''​ начинать упаковку. Параметры опциональны,​ по умолчанию ''​[#​начальный_индекс]''​ равен нулю, а ''​[#​количество]''​ соответствует размеру массива.
 +    * Функция возвращает кортеж с упакованными значениями. ​
 +    * Примеры:​ <sxh qsp>
 +LOCAL type, name = %ARRPACK('​args'​)
 +! Из массива char берём пять элементов,​ начиная со второго,​ и упаковываем в кортеж:​
 +%unit[123] = %ARRPACK('​char',​ 2, 5)
 +</​sxh>​
 +  * ''​%%UNPACKARR [$имя_массива],​ [%кортеж],​ [#​начальный_индекс],​ [#​количество]%%''​ - распаковывает значения из кортежа ''​[%кортеж]''​ в массив ''​[$имя_массива]''​. ​
 +    * Можно указать,​ сколько элементов ''​[#​количество]''​ распаковать,​ и с какого элемента ''​[#​начальный_индекс]''​ начинать распаковку. Параметры опциональны,​ по умолчанию ''​[#​начальный_индекс]''​ равен нулю, а ''​[#​количество]''​ соответствует длине кортежа.
 +    * Пример:​ <sxh qsp>
 +UNPACKARR '​A',​ ['​тест','​нескольких','​значений',​67,​ ['​вложенный кортеж'​]]
 +! $A[0] будет содержать '​тест'​
 +! $A[1] будет содержать '​нескольких'​
 +! $A[2] будет содержать '​значений'​
 +! A[3] будет содержать 67
 +! %A[4] будет содержать ['​вложенный кортеж'​]
 +</​sxh>​
 +    * оператор позволяет извлечь из кортежа одно значение по указанному индексу:​ <sxh qsp>
 +%tpl = ['​тест','​нескольких','​значений',​67,​ ['​вложенный кортеж'​]]
 +UNPACKARR '​A',​ %tpl, 3, 1
 +! в A будет 67
 </​sxh>​ </​sxh>​
  
help/tuples.1728582491.txt.gz · Последние изменения: 2024/10/10 17:48 — aleks_versus