需要动态创建一个Lua函数

时间:2019-07-15 15:40:20

标签: function 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”)的字符串,则“ fx”应施加在“ x”上。我已经天真地尝试过

Public Sub SaveOrderDate(ByVal orderNumber As String, ByVal orderDate As Date)

    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection 'note: avoid auto-instantiated "As New" objects
    conn.ConnectionString = "your connection string"
    conn.Open

    Const sql As String = "UPDATE o SET o.OrderDate = ? WHERE OrderNumber = ?"

    Dim cmd As ADODB.Command
    Set cmd.ActiveConnection = conn
    cmd.CommandType = adCmdTypeText
    cmd.CommandText = sql

    cmd.Parameters.Append cmd.CreateParameter(Type:=adDate, Value:=orderDate)
    cmd.Parameters.Append cmd.CreateParameter(Type:=adVarChar, Value:=orderNumber)

    cmd.Execute
    conn.Close

End Sub

但这不起作用。

任何帮助和指导将不胜感激!

1 个答案:

答案 0 :(得分:4)

目前尚不清楚应该如何使用“ 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