2013-09-10 3 views
2

У меня есть строка, что-то вроде:строка для функции lua?

local func = "1 == 3" 

Как я могу преобразовать это в функцию, чтобы выполнить и получить результат из другой функции? Как:

function CheckFunc(func) 
local ret = functon() return func end 

return ret 
end 

ответ

8

loadstring() функция Вы ищете :)

В вашем случае это будет использоваться как: local func = loadstring("return (1==3)")

+2

+1 вы 'loadstring()' лучше, чем мой – HennyH

6
выход
local func = "1 == 3" 

function wrap(s) 
    return loadstring("(function() return "..s.." end)()") 
end 

funcWrapped = wrap(func) 

if funcWrapped() then 
    print "One eqauls Three" 
else 
    print "One doesn't equal Three" 
end 

бы

One doesn't equal Three 

ПРИМЕЧАНИЕ: Вы должны использовать @ Kamiccolo's loadstring на месте шахты в wrap

4

В Lua 5.1, вы можете использовать loadstring, как и другие ответы уже сказал:

local func = loadstring("return(1==3)") 

В Lua 5.2, то лучше использовать load

local func = load("return(1==3)") 
Смежные вопросы