union
union
<lst>:union(lst1, lst2, ..., lstn, [foo(item, pos)])
Esegue l'unione di tutte le liste. Sovrascrive gli elementi identici. Attenzione perché utilizza la comparazione del lua e quindi non funzione per le tabelle che vengono passate per riferimento.
Nel secondo caso è possibile passare la funzione che genera una key univoca per il confronto degli elementi.
local a = {"e"}
a = XTable(a):union({"a", "b", "e"}, {"a", "e"}):astable())
--> {"e", "a", "b"}
local orders = {
{id=2, product="Computer", price=1000, year=2010},
{id=2, product="Book", price=50, year=2012},
}
local orders1 = {
{id=4, product="Computer", price=1000, year=2010},
{id=4, product="Book", price=50, year=2012},
{id=4, product="TV", price=800, year=2011},
}
local x = (XTable(orders)
:union(orders1,
function(item, pos) return format("%s-%d-%d", item.product, item.price, item.year) end)
:astable()
--> {{id=2, product="Computer", price=1000, year=2010},
{id=2, product="Book", price=50, year=2012},
{id=4, product="TV", price=800, year=2011}}