首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Lua表不能用一个表作为它的键进行初始化?

Lua表不能用一个表作为它的键进行初始化的原因是因为Lua中的表作为键时,是根据键的地址来进行索引的,而不是根据键的内容。当使用一个表作为键时,Lua会将该表的地址作为键进行索引,而不是将表的内容作为键。这样做的原因是为了保证表的键的唯一性,避免出现冲突。

另外,使用一个表作为键进行初始化也会导致一些问题,比如表是可变的,当表发生变化时,其地址也会发生变化,这样就会导致之前使用该表作为键的索引失效。而且,使用一个表作为键进行初始化也会增加内存的消耗,因为每个表都需要占用一定的内存空间。

在Lua中,可以使用其他类型的值作为键进行初始化,比如字符串、数字等。如果需要使用一个表作为键,可以考虑使用表的字符串形式作为键,或者使用其他唯一标识符来代替表作为键。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动应用开发平台(MADP):https://cloud.tencent.com/product/madp
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
相关搜索:如何输入一个哈希表,它的键只能是枚举的成员?添加sql表的唯一约束作为另一个sql表的外键引用有过滤/显示表的部分的代码。想知道如何将整个表作为一个表进行过滤吗?当我从另一个表空间查询我在一个表空间中创建的表时,为什么不显示它?从主键不作为外键存在于另一个表中的表中删除当我们在Django中创建一个竞争表作为其他表的一列的外键时,哪一列将成为外键?获取一个表,该表包含一个值作为键,另一个列的计数或总和仅包含具有该值的行提取``mvabund::anova.manyglm`的p值并将其作为一个表进行测试我创建了一个表,并在EF Code First方法中创建了一个列作为其他两个表的外键Flyway V7.8.1不迁移它创建的H2表的第一个脚本如何复制一个模板,用另一个工作表中的数据填充它,并从另一个工作表中的一个范围重命名它,而不创建模板(2)?django auth_user中的用户名作为另一个表中的外键为什么我的表视图单元格类实例不能在我的Swift代码中运行它的初始化器?为什么当一个表是一个类的属性时,改变它的变量名不起作用?当我尝试用第一个表的主键创建另一个带有外键的表时,为什么会收到错误消息'Invalid table name‘为什么我的数组不能作为表中的新行追加?当它这样做时,它是未定义的吗?JavaScript / HTML如何将id从一个视图传递到一个控制器,作为另一个表中的外键?为什么我不能将自动增量设置为另一个表中用作外键的字段?我正在尝试过滤一个表计算。尝试在Table calc上进行筛选时,总计不会更改。它的静态问题是生成一个带有字典的表。为什么要用方括号和花括号来表示键和值?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 从不同层面看cocos2d-x

    一 框架层面 二 Lua层面 三 工具层面 四 android打包 一 框架层 总体来说,cocos2dX提供的一个简便的框架,包括了渲染,动画,事件分发,网络还有UI,物理引擎等几大模块。对于做一个游戏从功能上来说已经 足够了。我从这几个方面分别探讨下cocos2dX的优缺点以及我们在项目中是怎样用到的 (1)渲染:渲染这块,他的渲染数据跟Sprite进行了绑定,然后对于openGl也是直接进行了调用,而不是採用策略或者插件进行调用。对于后期假设採用DX的话 我认为这块比較冗余些。可是这些并不会影响游戏的渲染速度。它提供了batch来进行批次渲染。所以在游戏里,我们对资源进行了分组,然后分别用textPacker 拼成一张图片,格式呢 没有alpha的採用 RGB565,有alpha的採用RGBA4444,要求高的话就採用RGBA8888,然后统一採用批次渲染。游戏的速度会提升非常多。 对于游戏数据的管理,cocos採用CCTextureCache这个单例类进行管理。释放能够採用所有释放,还有释放没实用过的。而且也提供了异步载入动画资源的方法 (PS:这个对于想做ARPG的同学来说,但是好东西了)。所以对于渲染这块,我们尽量用批次,然后记得释放内存就OK了。 (2)动画:cocos他提供了一套action机制。总体来说,是sprite run action。然后驱动action里面的动画数据,进行播放动画。全部的动画都能够走action 接口。对于使用者来说,也不用去关心其它东西,仅仅须要初始化好你想要的动作,然后把动作数据塞给action。然后让sprite run 就能够了。大概action就是这个 流程。本来我们想自己写自己的动画,可是到后期,由于自己写一套工作量大。所以对于move,scale什么的仍旧採用cocos自己的。仅仅有animation採用了我们的。 可是如今想起来,全然没有必要。cocos提供的已经足够了。我们所须要做的就是把动作编辑器导出的动画数据用cocos的动作翻译(对于动作编辑器我后面会讲)写 这么一个层就好 (3) 事件分发:cocos对于事件分发这块就比較弱了。他是事件管理是通过存储每个object以及他接收事件的优先级。然后进行分发。可是他并没有对场景进行树的管理 。所以我们的改变就是建立起场景树,然后事件分发先从场景顶端往下分发。期间每一个节点能够设置是否响应以及是否继续往下传递的属性(作为OC出身,这块全然模仿苹果那套) 全然丢弃了cocos的那一套事件分发机制。对于场景树的维护,仅仅须要每次step的时候更新下。所以对于查询性能须要好好写一下 (4)网络:cocos提供了对curl的封装。提供了http的一些简单比方get,post的封装。但对于断点续传等并没有封装。对于socket,cocos则全然没有提供。我们採用了 BSDSocket (5)UI:UI这边,cocos提供了几种简单的控件,比方CCButton等。他们都继承于CCSprite,可是太少。并且初始化方法是在是太过于奇葩。所以我们自己写了一套UI。 (事实上无非也就是 button,label,tableView,scrollView,image还有textInput)他们也都继承CCSprite。然后添�一些每一个控件独有的逻辑就能够了。最麻烦 的应该就是textInput了。照着cocos提供的input写一遍,然后改改。(cocos提供了CCEditeBox,可是这货的的解决的方法是在IOS上调用IOS的的控件。可是他是直接加到了egLView上,对于页面移动,页面关闭处理起来比較麻烦。 所以这个临时还不能用) 二 lua 为了让游戏更有灵活性,cocos提供了lua。由C++做引擎,然后lua去写逻辑。这样就能够绕开苹果的审核。我们就讨论下C++与lua碰到的问题。 (1)通讯:cocos採用了tolua++来进行C++与lua的通讯。看Cocos2dXLuaLoad文件中,那些就是lua与C++通讯的一个层。详细通讯原理比方是通过 栈,什么的我就不讲了(事实上我也不太懂)。这些东西tolua++都已经替咱封装好了。我们须要做的就是写好C++文件 然后生成load文件。在CCLuaEngine里调用你生成的那个load方法。lua就能够訪问C++了。须要说明的是,我们这边尽量是lua调用C++的方法,C++不会去调用 Lua的方法。调用也是通过callBack去调用。 (2)问题: 问题1.当C++里面的函数须要传递lua指针时:在C++里,lua的函数指针是一个int的 变量。生成时

    01
    领券