Lua表格转换为函数的参数

我有一个使用以下格式的Redis命令:

red:msetnx(key1, val1, key2, val2, key3, val3, ...)

我想设置一个函数,该函数接受一个键值对表格,并将其传递给red:msetnx()函数。-- 我该如何重新格式化我的表格,使其成为交替的键 / 值逗号分隔参数列表,并将其传递给该函数?

点赞
用户4567755
用户4567755

可能有一种更易读的方法来做到这一点。

function foo (t)
   local f = {}
   for k,v in pairs(t) do
      table.insert(f, k)
      table.insert(f, v)
   end
   return table.unpack(f) -- 取决于 Lua 版本,table.unpack() 或者 unpack()
end
red:msetnx(foo({key1="val1", key2="val2" --[[以此类推]]}))
2017-01-20 18:58:36
用户3160475
用户3160475

使用以下顺序创建一个包含键和值的表,并使用 unpack 传递它:

args = { 'key1', 'val1', 'key2', 'val2', 'key3', 'val3' }
red:msetnx(unpack(args))
2017-01-20 18:58:51