gpt4 book ai didi

lua - 如何检查两个表(对象)在Lua中是否具有相同的值

转载 作者:行者123 更新时间:2023-12-03 21:54:59 30 4
gpt4 key购买 nike

我想检查两个表在 Lua 中是否具有相同的值,但没有找到方法。

我使用运算符 == ,似乎只是检查相同的对象,而不是表中的元素。

如果我有两张 table ,

a={}
b={}
a==b 的值是 false .

但如果
a={}
b=a
a==b 的值是 true .

我想知道是否有办法检查 Lua 中具有相同元素的两个表。有没有像 table.equals() 这样的内置函数去检查?

最佳答案

顺便说一句,我检查了@lhf 链接并且坏了,我发现了这个有用的例子:

function is_table_equal(t1,t2,ignore_mt)
local ty1 = type(t1)
local ty2 = type(t2)
if ty1 ~= ty2 then return false end
-- non-table types can be directly compared
if ty1 ~= 'table' and ty2 ~= 'table' then return t1 == t2 end
-- as well as tables which have the metamethod __eq
local mt = getmetatable(t1)
if not ignore_mt and mt and mt.__eq then return t1 == t2 end
for k1,v1 in pairs(t1) do
local v2 = t2[k1]
if v2 == nil or not is_table_equal(v1,v2) then return false end
end
for k2,v2 in pairs(t2) do
local v1 = t1[k2]
if v1 == nil or not is_table_equal(v1,v2) then return false end
end
return true
end

关于lua - 如何检查两个表(对象)在Lua中是否具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20325332/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com