OpenComputers/Стандартные библиотеки Lua

Материал из Minecraft Wiki
Перейти к: навигация, поиск

В OpenComputers доступны многие функции стандартных библиотек Lua. Однако некоторые из них могут быть ограничены, или переопределены.

Подробнее о стандартных библиотеках Lua вы можете узнать в официальной документации здесь.


Различия[править | править код]

Базовые функции[править | править код]

Функции базовой библиотеки Lua:

  • collectgarbage — Не доступна.
  • dofile и loadfile — Переопределены для загрузки из файловой системы OpenComputers (см. Filesystem API).
  • load — Может использоваться только для загрузки текста. Загрузка байткода может быть разрешена в настройках мода, однако не рекомендуется, так как представляет собой большую угрозу безопасности.
  • print — Переопределена для вывода на консоль (см. Term API)


Сопрограммы (Coroutine)[править | править код]

Набор функций по управлению сопрограммами coroutine доступен в моде без особенных изменений.


Примечание: функции coroutine.resume и coroutine.yield переопределены в моде с учетом того, что программа прерывает свое выполнение, если она не отвечает долгое время (точное значение смотрите в настройках мода).


Модули[править | править код]

Функции работы с модулями package переопределены в моде OpenComputer. Однако должны работать аналогично, за исключением следующих функций:

  • package.config — не используется
  • package.cpath — не используется
  • package.loadlib — не переопределена

Последние две не используются в связи с тем, что невозможна загрузка кода C из OpenComputers.


Операции со строками[править | править код]

Оригинальная библиотека для работы со строками string доступна без изменений.

Примечание: функции GPU API (а также term.write и print) полностью совместимы со строками в формате UTF-8. Кроме того, для облегчения работы с форматом Unicode, OpenComputers предоставляет библиотеку Unicode API.


Операции с таблицами[править | править код]

Оригинальная библиотека для работы с таблицами table доступна без изменений.


Математические функции[править | править код]

Оригинальная библиотека математических функций math доступна с незначительными изменениями:

  • math.random использует отдельный экземпляр класса java.util.Random для каждого потока Lua.
  • math.randomseed применяется к своему экземпляру java.util.Random соответственно.


Битовые операции[править | править код]

Оригинальная библиотека битовых операций bit32 доступна без изменений.


Операции ввода/вывода[править | править код]

Функции библиотеки io переопределены для работы с консолью и файловой системой OpenComputers.

Для стандартного ввода/вывода используются функции term.read / term.write.

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

  • io.popen — не доступна.
  • io.open — не поддерживает режим +. Поддерживаемые режимы: r, w, a, rb, wb и ab. Побитовый режим чтения файлов поддерживает загрузку строк в формате UTF-8.
  • io.stdin — читает данные с помощью term.read.
  • io.stdout — пишет используя term.write.
  • io.stderr — также пишет используя term.write, однако делает это красным цветом (если цвета поддерживаются монитором/видеокартой компьютера).
  • io.read — пока не поддерживает формат *n.


Функции операционной системы[править | править код]

Функции библиотеки os частично переопределены.

  • os.clock — возвращает приблизительное время работы CPU. Это не то же самое, что время работы компьютера (см. функцию computer.uptime из Computer API).
  • os.date — использует внутриигровую дату. Поддерживает различные форматы.
  • os.execute — переопределена для запуска программ с помощью shell.execute. См. Shell API
  • os.exit — создает событие ошибки, для того чтобы закрыть текущую сопрограмму.
  • os.setenv — добавляет переменные окружения шелла.
  • os.remove — алиас к filesystem.remove.
  • os.rename — алиас к filesystem.rename.
  • os.setlocale — не доступна.
  • os.time — переопределена, выводит внутриигровое время, начиная с создания мира. Учтите, что время указывается во внутриигровых "секундах". Чтобы получить число тактов домножте это значение на 1000/60/60 (в одном дне 24000 тактов) и вычтите 6000. Это число (6000) взято не случайным образом. Новая игра в Minecraft начинается в "полдень", который и считается точкой отсчета времени (ноль).
  • os.tmpname переопределена для генерации нового (не используемого) имени в каталоге /tmp.


Кроме того добавлена одна новая функция:

  • os.sleep(seconds: number) — приостанавливает скрипт на указанный промежуток времени. При этом сигналы (и события) по прежнему обрабатываются, когда компьютер приостановлен. События "копятся" в очереди событий и будут обработаны, когда компьютер возобновит работу.

См. также функции Computer API.


Отладка[править | править код]

Доступна только функция debug.traceback.