types - 表中的 Lua 表显示为 Nil

标签 types lua null lua-table

我正在学习在 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" ,不是 12 .你所做的相当于:

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/

相关文章:

java - 关于 null 的 Comparable 和 Comparator 契约(Contract)

types - 什么是声音编程语言?

http - 使用参数向多个 Nginx 主机发出一个请求

mysql - 从结果集中删除 NULL

c++ - 将 lua 与 c++ dll 一起使用

c++ - C++ 中的 Lua 转储

c# - 返回未知类型的空值

haskell - 使用 GHC 泛型时参数类型错误

c# - 在所有程序集中查找类型

types - 如何在制作实例期间强制检查插槽的类型?