2017-01-20 5 views
2

У меня есть команда Redis, которая использует формат:Lua таблица функционировать аргументы

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

Я хотел бы установить это за функции, которая принимает таблицу пар ключ/значение, и работает, что через red:msetnx() - - Как мне переформатировать таблицу в переменный список аргументов, разделенных запятыми или ключом, и передать это функции?

ответ

2

сделать одну таблицу, которая имеет ключи и значения в порядке, и передать его с помощью unpack:

args = { 'key1', 'val1', 'key2', 'val2', 'key3', 'val3' } 
red:msetnx(unpack(args)) 
+0

Ах, 'unpack' команда является то, что я искал. Благодаря! – arby

2

Возможно, что есть более простой способ сделать это.

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) -- depends on lua version table.unpack() or unpack() 
end 
red:msetnx(foo({key1="val1", key2="val2" --[[and so on]]})) 
Смежные вопросы