【发布时间】:2020-12-01 04:07:35
【问题描述】:
我正在尝试创建一个评估字符串并为其中包含的函数返回 LuaFunction 对象的方法。这些字符串将由用户输入,因此我无法事先知道函数的名称。示例字符串:
function doSomething()
print('x')
end
我希望 LuaFunction 指向 doSomething。
我能够使用正则表达式来捕获函数的名称,然后使用 NLua.Lua.GetFunction 但这不适用于函数中的函数。
现在我的代码使用 KeraLua.Lua.LoadString 并为 LoadString 创建的块返回一个 LuaFunction。这种工作,但这意味着 LuaFunction 不能接受 args。
This answer 与我想要的类似,但我不能像它显示的那样强制这些函数成为表的成员。
【问题讨论】:
-
我不相信您可以在不通过表访问的情况下访问其他匿名函数。你能接受
sometable.thefucntion作为输入吗?使用正确的输入,您可以使用该输入来获取功能。 -
它们不是匿名函数,我只是不知道名字。
-
sorry可能误解了问题,你是不是要获取用户刚才写的函数名,输入的是整个函数?
-
是的,好吧,我的意思是我需要得到没有标识符名称的函数
-
是否强制执行函数定义格式?你可以定义它
doSomething = function()...有或没有一个过程local,你也可以在一个表甚至全局定义它_G['doSomething'] = function()...这些在解决方案的范围内吗?