如何在 Lua 中从传递给我的参数函数中获取函数的参数?

我正在尝试使用函数修饰器装饰多个函数,并且我想获取我要装饰的函数的参数(在此参数中称为 fun),并将从参数(称为 fun)获取的参数作为参数传递给返回的函数(在此称为 func) 所以它可能看起来像这样:

local function decorator(fun)
  local function func(fun.args)
    -- 在这里编写要添加到函数 'fun' 的自定义行为

    fun(fun.args)
  end

  return func
end

然而,显然不存在 fun.args 这样的事情,这只是一种更加准确地向您解释我想要什么的方式。请注意,我不知道要修饰的函数,我要修饰的函数可能彼此不同,因此这将是向函数添加自定义行为的一种方式(如上面的代码示例中所示)

因此,有没有办法做到我所需要的?

点赞
用户7509065
用户7509065

Lua 通过 ... 实现可变参数。在你的场景下,你可以这样使用:

local function decorator(fun)
  local function func(...)
    -- 在这里编写自定义行为以添加到函数 'fun' 中

    fun(...)
  end

  return func
end

如果想在“自定义行为”段中使用参数,则可以使用 local args = {...}, 然后按顺序(例如,args[1] 包含第一个参数)访问它们。

2020-05-23 22:41:33