union

LUA

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.

Esempio 223. Esempio union

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}}