Встроенные функции Lua | Tdg

Версия:

2.x
Справочник Sandbox API Встроенные функции Lua

Встроенные функции Lua

Помимо модулей, для работы доступны отдельные функции из библиотеки Lua:

  • assert() – вызов исключения, если значение аргумента содержит false;

  • error() – вызов исключения;

  • next() – вывод следующего элемента таблицы по индексу;

  • pairs() – итерации по парам ключ-значение (key-value) таблицы;

  • ipairs() – итерации по парам ключ-значение для числовых ключей;

  • pcall() – вызов функции в защищенном режиме;

  • xpcall() – вызов функции в защищенном режиме с указанием обработчика ошибки;

  • print() – печать в stdout;

  • select() – выборка аргументов функции или общее число переданных аргументов;

  • tonumber() – конвертация в число;

  • tonumber64() – конвертация в 64-битное число;

  • tostring() – конвертация в строку;

  • type() – определение типа данных у переданного аргумента;

  • unpack() – вывод элементов переданной таблицы.

assert(v[, message])

Вызывает исключение, если аргумент v содержит nil или false.

Параметры
  • v (boolean) – аргумент или условие, значение которого проверяется

  • message (string) – сообщение об ошибке. Значение по умолчанию: assertion failed!.

Результат

  • v, если аргумент содержит true;

  • сообщение об ошибке, если аргумент содержит false.

error(message[, level])

Завершает последнюю вызванную защищенную функцию и вызывает исключение. Обычно при этом в начало сообщения добавляется информация о месте возникновения ошибки.

Параметры
  • message (any) – сообщение об ошибке

  • level (number) –

    место возникновения (уровень) ошибки. Возможные уровни:

    • 0 – уровень ошибки не добавляется в сообщение;

    • 1 (по умолчанию) – уровень ошибки в месте вызова функции error();

    • 2 – уровень ошибки в месте вызова функции, которая вызвала функцию error().

Результат

none

next(t[, index])

Позволяет проходить по всем полям таблицы t. Функцию можно использовать, чтобы проверить, пустая ли таблица.

Параметры
  • t (table) – таблица

  • index (number) – индекс элемента в таблице. Если аргумент t – таблица, а index – индекс элемента в в таблице, то next() возвращает индекс следующего после него элемента и связанное с ним значение. Если аргумент пропущен, он интерпретируется как nil. Если в аргументе index передан nil, функция возвращает начальный индекс и значение для него. Если передан индекс последнего элемента таблицы или таблица пустая, возвращается nil.

Результат

индекс элемента таблицы + связанное с ним значение или nil

pairs(t)

Позволяет выполнять итерации по парам ключ-значение (key-value) таблицы t.

Параметры

t (table) – таблица, по которой производится итерация

Результат

  • функция next()

  • таблица t

  • nil

ipairs(t)

Позволяет выполнять итерации по парам ключ-значение (key-value) таблицы t. Использует числовые ключи, другие ключи игнорируются.

Параметры

t (table) – таблица, по которой производится итерация

Результат

  • функция итерации

  • таблица t

  • nil

pcall(function_name, arg1, ···)

Вызывает функцию в защищенном режиме с заданными аргументами. pcall обрабатывает функцию и возвращает код состояния – true или false (boolean).

Параметры
  • function_name (string) – имя вызываемой функции

  • arg1 (any) – аргумент функции

Результат

  • true, если вызов функции был успешным;

  • false, если возникла ошибка.

Если ошибок нет, помимо статуса возвращаются все результаты вызова. Если ошибки есть, помимо статуса возвращается результат выполнения err.

xpcall(function_name, err, arg1, ...)

Как и pcall(), вызывает функцию в защищенном режиме с заданными аргументами, но еще позволяет установить новый обработчик ошибок err. xpcall обрабатывает функцию и возвращает код состояния – true или false (boolean). В случае возникновения ошибки вызывается обработчик err с исходным объектом ошибки и возвращает код состояния (boolean).

Параметры
  • function_name (string) – имя вызываемой функции

  • err (string) – обработчик ошибок

  • arg1 (any) – аргумент функции

Результат

  • true, если вызов функции был успешным;

  • false, если возникла ошибка.

print(...)

Принимает любое количество аргументов и печатает их значения в stdout. Для конвертации значений аргументов в строки используется функция tostring().

Результат

none

select(index, ...)

Возвращает значения аргументов функции или общее число переданных аргументов.

Параметры
  • index (string/number) – индекс, который содержит число или строку #

  • arg (any) – аргумент, переданный в функцию

Результат

  • все аргументы после аргумента с заданным индексом, если index – число;

  • общее количество переданных аргументов, если index – строка #.

tonumber(value)

Конвертирует заданное значение в число.

Параметры

value (string/number) – строка или Lua-число

Результат

конвертированное значение

Тип результата

number

tonumber64(value)

Конвертирует заданное значение в 64-битное целое число. Подробнее о функции tonumber64() можно прочитать в справочнике по встроенным модулям.

Параметры

value (string/number) – строка или Lua-число. На вход принимаются числа в десятичной, двоичной и шестнадцатеричной системах счисления. Если передать число с дробной частью (например, tonumber64('2.2')) в виде строки, функция вернет null.

Результат

конвертированное значение

Тип результата

number

tostring(value)

Конвертирует заданное значение в строку.

Параметры

value (any) – строка или Lua-число

Результат

конвертированное значение

Тип результата

string

type(value)

Определяет тип данных у переданного аргумента.

Параметры

value (any) – аргумент, тип которого требуется определить

Результат

тип данных в формате строки

Тип результата

string

unpack(list[, i, j])

Возвращает элементы для переданной таблицы. Если индексы элементов i и j пропущены, возвращает все элементы таблицы list.

Параметры
  • list (table) – таблица

  • i (number) – индекс первого возвращаемого элемента. Значение по умолчанию: 1.

  • j (number) – индекс последнего возвращаемого элемента. По умолчанию, j – общее количество элементов таблицы list (длина списка).

Результат

элементы таблицы

Нашли ответ на свой вопрос?
Обратная связь