我正在尝试从另一个函数内部“动态”创建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
但这不起作用。
任何帮助和指导将不胜感激!
答案 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