如何在 Lua 中将相同的代码放入不同的元方法中?

下面的代码能够工作,但我在两个元方法中有相同的代码。有没有可能将 __add__sub 中的代码重复到两个元方法中?

local function doMath(tbl, num, op)
  local sum = 0
  for _, v in next, tbl do
    sum = sum + tonumber(v) or 0
  end
  return op == 'add' and sum + num or sum - num
end

local mt = {
  __add = function(t, n)
    return doMath(t, n, debug.getinfo(1, 'n').name)
  end,

  __sub = function(t, n)
    return doMath(t, n, debug.getinfo(1, 'n').name)
  end
}

print(setmetatable({1, 2, 3}, mt) + 5)
点赞
用户2858170
用户2858170

local someFunc = function (a, b) end

local mt = { __add = someFunc, __sub = someFunc}


本地的一个函数 someFunc,可以接收两个参数 ab

接下来,我们创建了一个表 mt,使用了一个名为 __add 的键来保存函数 someFunc,同样的,我们也使用了 __sub 键来保存函数 someFunc

2021-03-04 19:58:44