加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

类型 – 表中的Lua表显示为零

发布时间:2020-12-14 21:46:24 所属栏目:大数据 来源:网络整理
导读:我正在学习Lua中的代码并遇到了我的代码问题,这是我第一次使用表,每当我在另一个表中调用一个特定的表时,我的类型为nil,打印表不显示表: xxxxx,因为它通常会(它只是打印一个空白),我假设这意味着我在定义表时做错了什么? 码: local craft = { sword = { "
我正在学习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包含键1和“棒”,而不是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”)会自动分配给数字索引,以及那些do(stick = {})被分配给您指定的键.

有关表声明如何工作的完整规范在the manual under Table Constructors中进行了解释.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读