需要动态创建一个 Lua 函数

我正在尝试在另一个函数中动态创建一个 Lua 函数。 新 Lua 函数将被称为“fx”,应该对标量变量(比如 x)进行操作并返回 f_x(x),其中 f_x(x)可以是“x+1”或“x^2”之类的东西。 重要的是,函数名“fx”已经给出(因为它将在其他函数中使用此名称),但是其属性是否返回“x+1”或“x^2”应该可以动态修改。

假设“x”是标量值输入变量,“y”是包含指令(如“x+1”或“x^2”)的字符串,应该将其作用于“x”。我尝试过:

function make_func(x, y)
  return (function fx(x) return y end)
end

但是这行不通。

非常感谢您的帮助和指导!

点赞
用户734069
用户734069

不清楚fx应该如何介入,但是如果你有一个包含潜在执行Lua代码的字符串(一个Lua表达式如果在存在x的情况下编译,那么它似乎是从Lua代码中构建字符串并执行的一个简单案例:

function make_func (x, lua_op)
   return dostring("return function(x) return " .. lua_op .. " end")
end

这需要lua_op来存储一个合法的Lua表达式字符串。

如果你想把函数存储在全局变量“fx”中,你可以在返回之前这样做:

function make_func (x, lua_op)
   fx = dostring("return function(x) return " .. lua_op .. " end")
   return fx
end
2019-07-15 15:49:19