возвращать значения при вызове функции с использованием lua alchemy - PullRequest
1 голос
/ 17 января 2011

Я вызываю функцию в lua из actionscript, используя callstack : Array = luaAlchemyInstance.doString("luafunction");

моя функция должна возвращать некоторые значения

function luafunction()
return true, 125
end

Когда я смотрю на массив callstack, возвращаемый функцией в as3, я получаю только часть успеха / неудачи. Длина массива равна 1, истина, и не содержит ни одного из моих возвращаемых значений.

Есть идеи, что не так? Ура

Ответы [ 3 ]

1 голос
/ 17 января 2011

Я не знаю lua-alchemy, но если doString() следует той же семантике, что и в стандартном Lua, правильный способ вызова функции должен быть:

callstack : Array = luaAlchemyInstance.doString("return luafunction()");
1 голос
/ 18 января 2011

doString() возвращает массив значений, возвращаемых при вызове.Первый элемент этого массива - true или false, что указывает на успех или неудачу вызова.Если это false, вторым элементом является сообщение об ошибке.

Также обратите внимание, что doString() принимает фактический код Lua в качестве аргумента, поэтому он должен быть

doString("return luafunction()")

См. документация и пример .

0 голосов
/ 17 января 2011

Я только когда-либо видел функции в Actionscript, которые возвращают один тип переменной одновременно (Number, String, Boolean и т. Д.).

Похоже, вы пытаетесь вернуть логическое значение и число / int / uint одновременно.

Вы могли бы просто попытаться вернуть оба значения объекта, что-то вроде этого:

function luafunction():Object
{
var obj:Object = new Object();
obj.myBoolean = true;
obj.myNumber = 125;
return obj;
}

Затем вы можете получить ваши значения чем-то вроде:

trace(obj.myBoolean, obj.myNumber);
...