Lua таблица различий - PullRequest
       3

Lua таблица различий

3 голосов
/ 04 октября 2019

Как я могу проверить, содержит ли таблица (в виде массива) все ключи другой таблицы? Что-то вроде array_diff_key в PHP: https://www.php.net/manual/fr/function.array-diff-key.php

Эта функция должна возвращать, например, ["firstLevel"] ["e"] , поскольку этот элемент не существует в tblTwo:

tblOne = {
    ["firstLevel"] = {
        ["a"] = "something",
        ["b"] = "something",
        ["c"] = "something",
        ["subLevel"] = {
            ["d"] = "something",
            ["e"] = "something",
        }
    }

tblTwo = {
    ["firstLevel"] = {
        ["a"] = "something",
        ["b"] = "something",
        ["c"] = "something",
        ["subLevel"] = {
            ["d"] = "something",
        }
    }

1 Ответ

4 голосов
/ 04 октября 2019

Попробуйте код ниже:

function diff(a,b,s)
    for k,v in pairs(a) do
        if b[k]==nil then return s.."."..k end
        if type(v)=="table" then
            local w=diff(v,b[k],k)
            if w~=nil then return s.."."..w end
        end
    end
end

print(diff(tblOne,tblTwo,"TOP"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...