这段代码会向 Lua 类似数组的表中添加哈希部分吗?
2014-8-4 11:57:55
收藏:0
阅读:110
评论:1
1)这之后,var 还只是数组部分,还是它已经有了哈希部分?
2)代码
var[10001] = 1
是将哈希部分加入 var,还是只是强制重新哈希表而不添加哈希部分?
3)这对表的大小有什么影响?
谢谢!
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
表在 1 和 2 都出现后只有一个数组部分。原因是你有一组连续的索引。具体而言,你从 1 到 10,001 创建了条目,Lua 将为它们分配空间。
例如,如果你创建了 1 到 1000,然后添加了 10001,它会将最后一个添加到哈希部分,而不是为所有条目之间创建 nil 条目。
无论你将什么类型的数据放入作为条目值,Lua 只关心索引在决定数组和哈希之间。这里的例外是将值设置为
nil。这可能有点复杂,但如果表空间是你的主要关注点,我不认为 Lua 会在你将它们设置为空时减少数组和哈希部分。我可能会在这方面弄错。至于大小,Lua 使用加倍策略。因此,在第 8192 个条目之后,Lua 添加了另外 8192 个条目,以便在 10000 和 10001 之间没有额外的数组空间被创建。
顺便说一下,Lua 不会对每个表添加重新哈希。当它添加桶时,它会为自己留出一些余地。我相信它在这里也会加倍。请注意,如果你的数据是稀疏的,即你不会填满 1 和你的最大值之间的大多数索引,则哈希的这种方法即使你的索引是数字也可以节省很多空间。主要的缺点是这意味着你不能在所有条目上使用
ipairs。