Здесь описаны основные изменения в QSP 5.9.1:
Основные изменения в версии QSP 5.9.1:
Оператор SETVAR
Дополняет функцию ARRITEM и позволяет в некоторых типовых случаях избежать генерации кода и оператора DYNAMIC.
Синтаксис: SETVAR [$имя переменной], [значение], [индекс]
Префикс имени переменной указывает тип значения, которое нужно записать в элемент массива (как с обычными присваиваниями).
Параметр [индекс] опционален и позволяет указать индекс элемента массива, которому нужно присвоить значение. Если этот параметр не указан, то значение присваивается 0-му элементу.
Значение и индекс могут быть любых типов.
Примеры:
SETVAR 'A', 65
SETVAR '$X', 'name', 4
SETVAR '$X', 'name', 'string index'
SETVAR '%Q', ['пример', 'кортежа'], 3
SETVAR '%Q', ['пример', 'кортежа'], [x, y]
Функция ARRTYPE
Позволяет получить тип значения элемента массива.
Синтаксис: ARRTYPE([$имя переменной], [индекс])
Параметр [индекс] опционален и позволяет указать индекс элемента массива, значение которого нужно проверить. Если этот параметр не указан, то проверяется 0-й элемент.
Индекс может быть любого типа.
Функция возвращает одно из следующих значений:
'' (пустая строка) - элемент массива не задан.
'#' - элемент содержит число.
'$' - элемент содержит строку.
'%' - элемент содержит кортеж.
Функция ARRPACK
Позволяет упаковать массив в кортеж. Это может быть полезно для разбора параметров функции в именованные переменные.
Синтаксис: ARRPACK([$имя переменной], [#начальный индекс], [#количество элементов])
Начальный индекс и количество элементов опциональны. По умолчанию начальный индекс равен 0, количество элементов равно количеству элементов в массиве.
Функция возвращает кортеж из элементов указанной части массива.
Примеры:
LOCAL type, name = ARRPACK('args')
type, name = ARRPACK('args', 1, 3)
Оператор UNPACKARR
Позволяет записать значения из кортежа в массив.
Синтаксис: UNPACKARR [$имя массива], [%кортеж], [#начальный индекс], [#количество элементов]
Начальный индекс и количество элементов опциональны. По умолчанию начальный индекс равен 0, количество элементов равно количеству элементов в кортеже.
Примеры:
UNPACKARR 'A', ['тест','нескольких','значений',67]
! $A[0] будет содержать 'тест'
! $A[1] будет содержать 'нескольких'
! $A[2] будет содержать 'значений'
! A[3] будет содержать 67
Функция RAND
Добавлен опциональный 3й параметр, указывающий моду нормального распределения (распределение Гаусса).
Возможна генерация чисел из всего указанного диапазона, но с различной вероятностью (см. усеченное нормальное распределение). Это упрощает создание игровых механик, где разные числа выпадают с различной вероятностью, но согласно нужному закону распределения (например, сумма при броске игровых костей при большом числе бросков стремится к нормальному распределению). С помощью указания моды в различных частях диапазона (или даже вне пределов диапазона) функция позволяет задать практически любую полезную кривую распределения чисел.
Синтаксис: RAND([#минимальное значение], [#максимальное значение], [#мода])
Если 3й параметр не указан, то функция возвращает случайное число в заданном диапазоне с равномерным/равновероятным распределением чисел.
При указании параметра [#мода] функция генерирует случайное число в заданном диапазоне согласно усеченному нормальному распределению.
Примеры:
x = RAND(1, 100)
x = RAND(1, 1000, 500)
x = RAND(1, 1000, 1)
x = RAND(1, 1000, 1000)
x = RAND(-1000, 0, -500)
x = RAND(1, 1000, 5000)
x = RAND(-1000, -100, -5000)
Функция REPLACE
Добавлен опциональный 4й параметр, указывающий максимальное количество замен искомой строки.
Синтаксис: REPLACE([$исходный текст], [$значение для поиска], [$значение для замены], [#количество замен])
Если [$значение для замены] не указано, то используется пустая строка (т.о. из текста будут удалены все искомые подстроки).
Если количество замен не указано, то функция заменяет все вхождения строки [$значение для поиска], иначе заменяет только первые [#количество замен] подстрок.
Функция возвращает текст, получившийся после замены подстрок в [$исходный текст].
|