3

我试图在 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真的失败了?

我期望的结果是它返回具有 in 值的数字键value。因此,如果value == "c"并且table[3]恰好具有该值,"c"那么它应该3作为结果返回。

4

1 回答 1

4

您需要使用for k, v in ipairs(table) do而不是for k, v in table do,因为这种形式的for循环在 之后需要一个迭代器in,因此会尝试“调用”您的table变量,这会导致错误。

于 2019-05-07T05:03:10.897 回答