如何在函数中传递表键以在 for 循环中使用?

不知何故,将表键作为函数参数传递似乎不起作用,如何实现?

我正在尝试将 vanilla Lua 中的 for 循环迭代技术封装到一个函数中,该函数具有三个参数:(1)要迭代的表格,(2)每次要检查的表键,和(3)要查找的值。如果找到匹配项,则返回它,否则返回 nil。

function table_find_match(table, table_key, match_value)
    for i=1, #table do
        local this = table[i]
        if this[table_key] == match_value then
            return this[table_key]
        end
    end
    return nil
end

local table_example = {
    {
        key_example = "string_value_1"
    },
    {
        key_example = "string_value_2"
    }
}

local result = table_find_match(table_example, key_example, "string_value_1")
print(result)
点赞
用户1442204
用户1442204

发现了一个解决方案,如果我将表的键作为字符串传递,它就会工作,例如:

table_find_match(table_example, "key_example", "string_value_1")

但我真的不喜欢将其转换为字符串,如果有人知道任何其他解决方法,请分享。

2019-08-24 13:53:26
用户11975602
用户11975602

如果你像 table_find_match(table_example, key_example, "string_value_1") 这样传递参数,如果 key_example 在执行前没有定义,则会被视为一个 (nil) 变量,因此必须这样写:

local key_example = "key_example"
local result = table_find_match(table_example, key_example, "string_value_1")
print(result)
2019-08-28 11:51:26