Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие языки > Язык Lua - как сравнить содержимое двух таблиц в L


Автор: nvrrus 29.1.2013, 16:26
Здравствуйте, уважаемые форумчане!

Подскажите, пожалуйста, как сравнить содержимое двух таблиц в Lua?

Например, есть строка ввода в SQL, которая в Lua является (по типу) таблицей:

Код

DocumentRecord5 = {'doc5', 'type5', 'DOCsource5$$', 'body5'}


Вводим эту строку в таблицу SQL (DOCUMENTS).
Строка введена верно без ошибок.
Считываем строку и таблицы такой вот Lua -обёрткой 

Код

Select(db, "SELECT * FROM DOCUMENTS WHERE DOC_ID=1;")


где функция Select имеет вид
Код

function Select(db, sql, record)
    for a in db:rows(sql) do return a end
end


функция Select возвращает таблицу.

Полученная таблица и вставленная одинаковые, но как их можно правильно сравнить в Lua?

Был вариант:
Код

-----------------------
-- @return  равны ли два массива по длинне и по значениям.
function is_equal(tbl1, tbl2)

    if #tbl1 ~= #tbl2 then return false end
        
            for i=1,#tbl1 do
                if tbl1[i] ~= tbl2[i] then return false end
            end
    return true;
end
---------------------

Но два массива равны только если они равны по типам (например амссив чисел можно сравнить с массивом чисел.
Иначе всегда фальш, даже в случае если таблицы равны.

Подскажите, кто сталкивался и не сталкивался, свои мысли по решению этого вопроса.
Заранее спасибо!

Автор: Lipetsk 29.1.2013, 16:32
если они разного типа, то что значит "они равны"?

приведите к строке tostring

Автор: nvrrus 31.1.2013, 08:08
всем спасибо, подсказали вот такое решение
http://snippets.luacode.org/?p=snippets/Deep_Comparison_of_Two_Values_3 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)