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

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


help:arrays

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:arrays [2024/10/14 10:30]
aleks_versus
help:arrays [2025/04/19 06:41] (текущий)
aleks_versus [Функции и операторы для работы с массивами] дублировался арсайз
Строка 50: Строка 50:
   * написать имя массива   * написать имя массива
   * затем без пробелов,​ не отступая от имени массива,​ в квадратных скобках написать номер ячейки,​ в которую хотим поместить значение   * затем без пробелов,​ не отступая от имени массива,​ в квадратных скобках написать номер ячейки,​ в которую хотим поместить значение
-  * затем поставить знак ''​%%=%%''​ (операция присваивания)+  * затем поставить знак ''​**=**''​ (операция присваивания)
   * и уже после знака равно написать нужное значение.   * и уже после знака равно написать нужное значение.
  
Строка 331: Строка 331:
     * Параметр ''​%%[#​количество]%%''​ является необязательным. По умолчанию - до конца массива-источника.     * Параметр ''​%%[#​количество]%%''​ является необязательным. По умолчанию - до конца массива-источника.
     * Параметр ''​%%[#​начало]%%''​ является необязательным. По умолчанию - ''​%%0%%''​.     * Параметр ''​%%[#​начало]%%''​ является необязательным. По умолчанию - ''​%%0%%''​.
-    * Не имеет значения,​ указываете ли вы ''​%%$%%''​ или ''​%%''​ перед названием массива,​ или нет. Копируются элементы с любыми типами значений.+    * Не имеет значения,​ указываете ли вы ''​%%$%%''​ или ''​%''​ перед названием массива,​ или нет. Копируются элементы с любыми типами значений.
     * Примеры:​ <sxh qsp>     * Примеры:​ <sxh qsp>
 COPYARR '​$a','​$b'​ COPYARR '​$a','​$b'​
Строка 341: Строка 341:
   * ''​%%SORTARR [$имя_массива],​ [#​порядок]%%''​ — Данный оператор сортирует указанный массив. Параметр ''​%%[#​порядок]%%''​ опционален. Если не указан или равен 0, то сортирует массив по возрастанию (от меньшего к большему). Если равен 1, то сортирует массив по убыванию (от большего к меньшему).   * ''​%%SORTARR [$имя_массива],​ [#​порядок]%%''​ — Данный оператор сортирует указанный массив. Параметр ''​%%[#​порядок]%%''​ опционален. Если не указан или равен 0, то сортирует массив по возрастанию (от меньшего к большему). Если равен 1, то сортирует массив по убыванию (от большего к меньшему).
     * Может сортировать массивы любых типов (числа,​ строки,​ кортежи),​ но не допускается смешивать значения разных типов в одном массиве.     * Может сортировать массивы любых типов (числа,​ строки,​ кортежи),​ но не допускается смешивать значения разных типов в одном массиве.
-    * Для указания типа сортируемых значений нужно указать префикс типа как часть имени массива (''​%%$%%'',​ ''​%%%%%''​).+    * Для указания типа сортируемых значений нужно указать префикс типа как часть имени массива (''​%%$%%'',​ ''​%''​).
     * Пример сортировки текстового массива:​ <sxh qsp>     * Пример сортировки текстового массива:​ <sxh qsp>
 $a[] = '​nn'​ $a[] = '​nn'​
Строка 367: Строка 367:
 scanstr '​$words',​ $text, '​\[(.*?​)\]',​ 1 scanstr '​$words',​ $text, '​\[(.*?​)\]',​ 1
 !В массиве $words окажутся значения:​ '​first',​ '​second',​ '​third'​ !В массиве $words окажутся значения:​ '​first',​ '​second',​ '​third'​
-</​sxh>​ 
-  * ''​%%ARRSIZE([$имя_массива])%%''​ - функция возвращает число элементов массива с названием ''​%%[$имя_массива]%%''​. 
-    * Не имеет значения,​ указываете ли вы ''​%%$%%''​ или ''​%%%%%''​ перед названием массива или нет. Подсчитывается общее число ячеек и со значениями любых типов. 
-    * Примеры:​ <sxh qsp> 
-n = ARRSIZE('​a'​) 
-n = ARRSIZE('​$a'​) 
-!Результат будет одинаковый 
 </​sxh>​ </​sxh>​
   * ''​%%ARRITEM([$имя_массива],​[индекс_элемента])%%''​ — возвращает значение элемента массива с названием ''​%%[$имя_массива]%%''​ по указанному индексу. То есть функция извлекает значение из указанной ячейки массива. Примеры:​ <sxh qsp>   * ''​%%ARRITEM([$имя_массива],​[индекс_элемента])%%''​ — возвращает значение элемента массива с названием ''​%%[$имя_массива]%%''​ по указанному индексу. То есть функция извлекает значение из указанной ячейки массива. Примеры:​ <sxh qsp>
Строка 398: Строка 391:
 end end
 </​sxh>​ </​sxh>​
-  * ''​%%ARRPOS([$имя_массива],​[значение],​[#начало])%%'' ​возвращает номер элемента массива с названием ''​%%[$имя_массива]%%''​, равного значению ''​%%[значение]%%''​. Поиск начинается с элемента ​под номером ''​%%[#​начало]%%''​индексация элементов массива ведётся ​с нуляЕсли ​указанное ​значение ​не найденофункция возвращает ''​%%-1%%''​.< +  * ''​%%SETVAR ​[$имя_массива],​ [значение],​ [индекс]%%'' ​— устанавливает ​значение элемента массива с названием ''​%%[$имя_массива]%%'' ​по указанному индексу. То есть оператор присваивает ​значение указанной ячейке массива. Префикс имени переменной указывает тип значения, которое нужно записать в элемент ​массива (как с обычными присваиваниями). Параметр ​''​[индекс]''​ опционален. Если этот параметр не указан, ​то значение присваивается ​0-му элементуЗначение и индекс могут быть ​любых типов. Примеры:​ <sxh qsp> 
-    * Параметр ''​%%[#начало]%%''​ может отсутствовать, при этом он принимается равным ''​%%0%%''​.+SETVAR '​A',​ 65 
 +SETVAR '​$X',​ '​name',​ 4 
 +SETVAR '​$X',​ '​name',​ '​string index'​ 
 +SETVAR '​%Q',​ ['​пример',​ 'кортежа'], 3 
 +SETVAR '​%Q',​ ['​пример',​ '​кортежа'​],​ [x, y] 
 +</​sxh>​ Данный оператор дополняет функцию ''​**ARRITEM**''​ и позволяет избегать использования ''​DYNAMIC''​ в некоторых случаях. 
 +  * ''​%%ARRSIZE([$имя_массива])%%''​ - функция возвращает ​число элементов массива с названием ​''​%%[$имя_массива]%%''​. 
 +    * Не имеет значения, указываете ли вы ''​%%$%%''​ или ''​%%%%%'' ​перед названием массива или нет. Подсчитывается общее число ячеек и со значениями любых ​типов.
     * Примеры:​ <sxh qsp>     * Примеры:​ <sxh qsp>
-!Поиск строки 'This' ​в текстовом массиве ​"​$A"​ +n = ARRSIZE('​a'​) 
-ARRPOS('$A','This',0) +n = ARRSIZE('​$a'​) 
-!Поиск числа ​65 в массиве ​"​A"​ (первые два элемента массива ​игнорируются) +!Результат будет ​одинаковый 
-ARRPOS('A',65,2) +</​sxh>​ 
-оиск строки 'test' ​среди ​значений массива "$B" +  * ''​**ARRTYPE(**[$имя_переменной], [индекс]**)**'' ​- получает тип значения, ​которое хранится в массиве ''%%[$имя_переменной]%%'' ​под индексом ​''​[индекс]''​. 
-ARRPOS('$B','​test')+    ​* ​Параметр ''​%%[индекс]%%''​ может отсутствовать,​ при этом он принимается равным ''​0''​. То есть вычисляется тип значения переменной/​нулевой ячейки ​массива. Индекс может быть любого типа. 
 +    * Функция возвращает одно из следующих значений ​в зависимости от типа: 
 +      * ''​%%''​%%''​ (пустая строка) - элемент массива не задан. 
 +      * ''​%%'#'​%%''​ - элемент содержит число. 
 +      ​* ​''​%%'​$'​%%''​ - элемент содержит строку. 
 +      * ''​%%'​%'​%%''​ - элемент содержит кортеж. 
 +    * Пример: <sxh qsp> 
 +$ddd = '​text'​ 
 +arrtype('​ddd'​) & ! '​$'​ 
 + 
 +$g = '​text'​ & g = 13 
 +arrtype('​g'​) & ! '#'​ 
 + 
 +%tuple['​index'​] = [12, 'string'​] 
 +arrtype('​tuple',​ 'index'​) ​& ! '​%'​ 
 + 
 +! $empty not exist 
 +arrtype('​$empty'​) & ! ''​
 </​sxh>​ </​sxh>​
-    * Функция возвращает только числовой индекс элемента. Строковый или многомерный индекс с помощью данной функции получить нельзя. 
   * ''​%%MAX([выр1],​[выр2],​ …)%%''​ - возвращает максимальное из значений выражений-аргументов. Если передан один аргумент,​ то считается,​ что указано имя массива:​ <sxh qsp>   * ''​%%MAX([выр1],​[выр2],​ …)%%''​ - возвращает максимальное из значений выражений-аргументов. Если передан один аргумент,​ то считается,​ что указано имя массива:​ <sxh qsp>
 MAX('​a'​) &! вернёт максимальное из числовых значений элементов массива "​a"​ MAX('​a'​) &! вернёт максимальное из числовых значений элементов массива "​a"​
Строка 419: Строка 435:
 MIN('​%d'​) &! вернёт минимальный из кортежей в массиве '​%d'​ MIN('​%d'​) &! вернёт минимальный из кортежей в массиве '​%d'​
 </​sxh>​ </​sxh>​
-  * ''​%%ARRCOMP([$имя_массива],​[$шаблон],​[#​начало])%%''​ - возвращает номер элемента массива ''​%%[$имя_массива]%%'',​ соответствующего регулярному выражению ''​%%[$шаблон]%%''​. Поиск начинается с элемента с номером ''​%%[#​начало]%%'';​ индексация элементов массива ведётся с нуля. Если указанное значение не найдено,​ функция возвращает ''​%%-1%%''​.<+  * ''​%%ARRCOMP([$имя_массива],​[$шаблон],​[#​начало])%%''​ - возвращает номер элемента массива ''​%%[$имя_массива]%%'',​ соответствующего регулярному выражению ''​%%[$шаблон]%%''​. Поиск начинается с элемента с номером ''​%%[#​начало]%%'';​ индексация элементов массива ведётся с нуля. Если указанное значение не найдено,​ функция возвращает ''​%%-1%%''​.
     * Поиск работает только по текстовым массивам (символ ''​%%$%%''​ в названии массива можно опустить).     * Поиск работает только по текстовым массивам (символ ''​%%$%%''​ в названии массива можно опустить).
     * Параметр ''​%%[#​начало]%%''​ может отсутствовать,​ при этом он принимается равным ''​%%0%%''​.     * Параметр ''​%%[#​начало]%%''​ может отсутствовать,​ при этом он принимается равным ''​%%0%%''​.
Строка 434: Строка 450:
 </​sxh>​ </​sxh>​
     * Функция возвращает только числовой индекс элемента. Строковый или многомерный индекс с помощью данной функции получить нельзя.     * Функция возвращает только числовой индекс элемента. Строковый или многомерный индекс с помощью данной функции получить нельзя.
 +
 +Так же см. ARRPACK и UNPACKARR в разделе [[help:​tuples|"​Кортежи"​]]
  
 [[help:​strings|Вперёд:​ Строки]] [[help:​strings|Вперёд:​ Строки]]
  
help/arrays.1728901812.txt.gz · Последние изменения: 2024/10/14 10:30 — aleks_versus