我正在学习在 Lua 中编写代码并遇到我的代码问题,这是我第一次使用表格,每当我在另一个表格中调用特定表格时,我的类型为 nil 并且打印表格不显示表格: xxxxx,因为它通常会(它只是打印一个空白),我假设这意味着我在定义表格时做错了什么?
代码:
local craft = { sword = { "cobble", stick = {} } }
print(type(craft.sword[1]))
print(craft.sword[1])
print(type(craft.sword[2]))
print(craft.sword[2])
print(craft)
(这是表格的简化版本,为了测试这个错误但它仍然出现在这里)
输出:
string
cobble
nil
table: 8a3b983
最佳答案
craft.sword
包含 key 1
和 "stick"
,不是 1
和 2
.你所做的相当于:
local craft = {}
craft.sword = {}
craft.sword[1] = "cobble"
craft.sword.stick = {}
请注意,craft.sword[2] 中绝不会存储任何内容。
更一般地说,如果你使用值而不是键来声明一个表,如
{ "one", "two", "three" }
,它将它们分配给数字索引,从 1 开始。如果您使用键和值声明它,如 { first = "one", second = "two", third = "three" }
,这些值仅存储在您指定的键中,而不会自动存储在数字索引中。如果你混合它们,就像你在这里所做的那样 - 使用 { "cobble", stick = {} }
- 没有键的值 ( "cobble"
) 会自动分配给数字索引,有键的值 ( stick = {}
) 会分配给您指定的键。the manual under Table Constructors 中解释了表声明如何工作的完整规范。 .
关于types - 表中的 Lua 表显示为 Nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19100748/