我试图在Garry的mod Lua中找到与表的值相关的键,但是却收到了错误消息,好像它不是表。
这是解决我正在维护/修复的其他人的代码上的游戏崩溃错误的大型解决方案的一部分。
长话短说,我需要根据键的值获取键的数量。出现此问题的简单短代码:
function starttest()
local tbl = {"a", "b", "c"}
local printme = FindValueInTable(tbl, "c")
print(printme)
end
function FindValueInTable(table, value)
for k, v in table do --errors on this line saying "attempt to call a table value"
if v == value then
return k
end
end
return nil
end
我很困惑这里要做的事情,因为table
实际上是一个表,for k,v in table
真的会失败吗?
我期望的结果是它返回具有value
中的值的数字键。因此,如果value == "c"
和table[3]
的值恰好是"c"
,则结果应返回3
。
答案 0 :(得分:4)
您需要使用for k, v in ipairs(table) do
而不是for k, v in table do
,因为这种形式的for
循环期望in
之后有一个迭代器,因此尝试“调用”您的{{ 1}}变量,从而导致错误。