2

我有一个字符串,例如:

local func = "1 == 3"

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

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

 return ret
end
4

3 回答 3

8

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

在您的情况下,它将像这样使用: local func = loadstring("return (1==3)")

于 2013-09-10T08:23:41.623 回答
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

注意:您应该使用@Kamiccololoadstring代替我的wrap

于 2013-09-10T08:24:25.740 回答
4

在 Lua 5.1 中,您可以使用loadstring,正如其他答案已经说过的那样:

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

在 Lua 5.2 中,最好使用load

local func = load("return(1==3)")
于 2013-09-10T08:47:43.470 回答