动态 – lua调用函数从一个带函数名的字符串
发布时间:2020-12-15 00:21:27 所属栏目:大数据 来源:网络整理
导读:在lua中可以从代表其名称的字符串执行函数吗? 即:我有字符串x =“foo”,是否可以做x()? 如果是,语法是什么? 解决方法 在全局命名空间中调用一个函数(由@ THC4k提到)很容易完成,并且不需要loadstring()。 x='foo'_G[x]() -- calls foo from the global
在lua中可以从代表其名称的字符串执行函数吗?
即:我有字符串x =“foo”,是否可以做x()? 如果是,语法是什么? 解决方法
在全局命名空间中调用一个函数(由@ THC4k提到)很容易完成,并且不需要loadstring()。
x='foo' _G[x]() -- calls foo from the global namespace 如果另一个表中的函数,如x =’math.sqrt’,则需要使用loadstring()(或遍历表)。 如果使用loadstring(),您将不仅需要使用椭圆(…)来附加括号以允许参数,还可以向前添加返回值。 x='math.sqrt' print(assert(loadstring('return '..x..'(...)'))(25)) --> 5 或走桌子: function findfunction(x) assert(type(x) == "string") local f=_G for v in x:gmatch("[^%.]+") do if type(f) ~= "table" then return nil,"looking for '"..v.."' expected table,not "..type(f) end f=f[v] end if type(f) == "function" then return f else return nil,"expected function,not "..type(f) end end x='math.sqrt' print(assert(findfunction(x))(121)) -->11 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |