字符串到lua函数?

时间:2013-09-10 08:14:36

标签: lua closures

我有一个字符串,如:

local func = "1 == 3"

如何将其转换为执行函数并从另一个函数中获取结果?像:

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

 return ret
end

3 个答案:

答案 0 :(得分:8)

loadstring()是您正在寻找的功能:)

在您的情况下,它将被用作: local func = loadstring("return (1==3)")

答案 1 :(得分: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

注意:您应该在loadstring

中使用@ Kamiccolo的wrap代替我的{{1}}

答案 2 :(得分:4)

在Lua 5.1中,您可以使用loadstring,因为其他答案已经说过:

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

在Lua 5.2中,最好使用load

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