确定表是否为空(即,当前既不包含数组样式值也不包含dict样式值)的最有效方法是什么? 目前,我正在使用next(): if not next(myTable) then -- Table is empty end 有没有更有效的方法? 注意:#此处的运算符不足,因为它仅对表中的数组样式值进行运算-因此与之没有#{test=2}区别,#{}因为两者都返回0。另外请注意,检查表变量是否nil不足,因为我不是在寻找nil个值,而是具有0个条目的表(即{})。
有没有检查表是否包含值的方法?我有自己的(幼稚)功能,但是我想知道是否为此存在“官方”功能?还是更有效率的... function table.contains(table, element) for _, value in pairs(table) do if value == element then return true end end return false end 顺便说一句,我使用此函数的主要原因是将表用作集合,即没有重复的元素。还有其他我可以使用的东西吗?
我有一个lua表,用作哈希图,即带有字符串键: local map = { foo = 1, bar = 2 } 我想“弹出”该表的键所标识的元素。有一种table.remove()方法,但是只需要删除元素的索引(即数字),而不需要通用键。我希望能够做到table.remove(map, 'foo'),这就是我的实现方式: function table.removekey(table, key) local element = table[key] table[key] = nil return element end 有更好的方法吗?