把字符串转化为Lua函数的功能?

我有一个字符串,类似于:

local func = "1 == 3"

我怎么把它转换成一个函数,在另一个函数内执行并得到结果?如下:

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

 return ret
end
点赞
用户1150918
用户1150918

loadstring()是你要找的函数 :)

在你的情况下,它将被用于:

local func = loadstring("return (1==3)")
2013-09-10 08:23:41
用户2303714
用户2303714
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

注意:您应该在wrap中使用@Kamiccolo的loadstring来替代我的。

2013-09-10 08:24:25
用户1009479
用户1009479

在 Lua 5.1 中,你可以像其他回答已经说的那样使用 loadstring

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

在 Lua 5.2 中,最好使用 load

local func = load("return(1==3)")
2013-09-10 08:47:43