gpt4 book ai didi

c - Lua 键名或自动索引?

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:00 26 4
gpt4 key购买 nike

假设有以下两个表:

foo = {
"aaa",
"bbb",
"ccc"
}

bar = {
first = "aaa",
second = "bbb",
third = "ccc"
}

foo 没有分配键,而 bar 有键。当我迭代表 bar 时,我得到了分配的键名,因为它是一个字符串,所以很容易看出这些键是在 Lua 脚本中定义的。

但是当我迭代 foo 时,我当然会得到一个整数作为键,从 1 开始。我怎么能看到(或者甚至可能)这是一个“自动索引” "键未在表中定义?

我正在使用 lua_next() 从 C 中遍历表格并使用 lua_type() 检查类型

我需要按照它的结构完全相同的方式写回表(作为 Lua 脚本),这意味着如果没有开始的键(如 foo),我将不写数字“自动索引”,只写值。

编辑
也许不是那么清楚。简短的版本是:

is possible to distinguish between a numerical index set by the user/programmer and one auto assigned by the Lua Engine?

最佳答案

在每个表中都没有这样的值没有键。您示例中的两个表只是表构造函数的两种语法糖。

foo = {
"aaa",
"bbb",
"ccc"
}

只是语法糖:

foo = {
[1] = "aaa",
[2] = "bbb",
[3] = "ccc"
}

bar = {
first = "aaa",
second = "bbb",
third = "ccc"
}

是语法糖:

bar = {
["first"] = "aaa",
["second"] = "bbb",
["third"] = "ccc"
}

这两种风格甚至可以混合使用,例如:

foobar = {
"aaa",
first = "aaa",
"bbb",
second = "bbb",
"ccc",
third = "ccc"
}

同样,每个值都有一个键,在 foo 的情况下,它只是 1 的整数,在 bar 的情况下,它只是字符串.

关于c - Lua 键名或自动索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26325281/

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