Здесь показаны различия между двумя версиями данной страницы.
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|Вперёд: Строки]] | ||