Jet 30 Опубликовано: 12 мая, 2016 Данная функция имеет такой вид: var = load(codestring, arg2, arg3, tableEnviroment) Возвращает она функцию, сформированную из строчки кода, переданной в параметре codestring. Параметр tableEnviroment это таблица, задающая "окружение", т.е. все функции и переменные будут взяты из этой таблицы. У меня конкретный вопрос: что делают параметры arg2 и arg3? Какие типы они имеют? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 13 мая, 2016 (изменено) Функция load(chunk, chunkname, mode, env) загружает кусок кода и возвращает функцию. Если параметр chunk — строка, то и кусок — строка. Если это функция, то load будет вызывать её и объединять возвращаемое строковое значение с другими. Например, file:read можно прицепить туда. chunkname используется для дебаг-сообщений и описаний об ошибке. Например, интерпретатор Луа в OpenComputers устанавливает значение, равное "stdin", так что ошибки получаются рода: stdin:1: ... Stacktrace: ... mode задаёт, как интерпретировать строку куска. "b" — только как байт-код (типа той, что string.dump возвращает); "t" — только как Луа-код (по умолчанию в OpenComputers); "bt" — определить автоматически (по умолчанию в стандартном Луа). Аргумент env задаёт переменные, доступные загружаемому через load коду. Как, например, print есть в глобальном окружении, вот похожим образом можно задавать свои. Например, _ENV — окружение программы, из который вызывается функция. Изменено 13 мая, 2016 пользователем Fingercomp 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Pofigist 35 Опубликовано: 12 мая, 2016 Данная функция имеет такой вид: var = load(codestring, arg2, arg3, tableEnviroment) Возвращает она функцию, сформированную из строчки кода, переданной в параметре codestring. Параметр tableEnviroment это таблица, задающая "окружение", т.е. все функции и переменные будут взяты из этой таблицы. У меня конкретный вопрос: что делают параметры arg2 и arg3? Какие типы они имеют? Сейчас не совсем уверен, но на сколько я знаю arg3 может быть "t", "b" или "tb". Этот аргумент указывает на то, читать ли функцию если она представлена как текст или как байт код или и то и то. Но не уверен. P.S. Чтение байткода нужно разрешать в конфиге. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Jet Автор вопроса 30 Опубликовано: 13 мая, 2016 Функция load(chunk, chunkname, mode, env) загружает кусок кода и возвращает функцию. Если параметр chunk — строка, то и кусок — строка. Если это функция, то load будет вызывать её и объединять возвращаемое строковое значение с другими. Например, file:read можно прицепить туда. chunkname используется для дебаг-сообщений и описаний об ошибке. Например, интерпретатор Луа в OpenComputers устанавливает значение равное "stdin", так что ошибки получаются рода: stdin:1: ... Stacktrace: ... mode задаёт, как интерпретировать строку куска. "b" — только как байт-код (типа той, что string.dump возвращает); "t" — только как Луа-код (по умолчанию в OpenComputers); "bt" — определить автоматически (по умолчанию в стандартном Луа). Аргумент env задаёт переменные, доступные загружаемому через load коду. Как, например, print есть в глобальном окружении, вот похожим образом можно задавать свои. Например, _ENV — окружение программы, из который вызывается функция. Да, именно этого я и ждал. Прекрасно, спасибо за исчерпывающий ответ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Данная функция имеет такой вид:
Возвращает она функцию, сформированную из строчки кода, переданной в параметре codestring.
Параметр tableEnviroment это таблица, задающая "окружение", т.е. все функции и переменные будут взяты из этой таблицы.
У меня конкретный вопрос: что делают параметры arg2 и arg3? Какие типы они имеют?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах