网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 其他技术区 > 游戏开发 >

Lua中使用#求含nil的数组长度漫谈

时间:2025-02-27 00:00

人气:

作者:admin

标签:

导读:Lua中含nil的数组长度 在lua中常常使用 “#” 来获取数组的长度,但仅对于数组中不存在nil值的情况,当数组中存在nil情况下则使用#获取的数组长度则变的不定,这里就来简单验证下。...

在lua中常常使用 “#” 来获取数组的长度,但仅对于数组中不存在nil值的情况,当数组中存在nil情况下则使用#获取的数组长度则变的不定,这里就来简单验证下。

试看以下代码片段:

Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
> table1 = {nil,1,12,45,nil}
> print(#table1)
4

> table2 = {nil,nil,1,2,3,4}
> print(#table2)
6

> table3 = {nil,nil,1,2,3,4,nil,1,2,nil}
> print(#table3)
6

> a = 12
> b = 13
> c = 15
> table4 = {nil,nil,a,b,c,154,nil,256}
> print(#table4)
8

先给出结论:

  1. Lua 的 # 运算符会寻找最大的连续整数键 n,使得 table[n] 不为 nil,且 table[n+1]nil

这条结论适用于table1 和 table3 情况

  1. 如果表中存在 nil 空洞(即非末尾的 nil),# 的结果可能不符合预期

    结合table2 的长度数值来看。其长度计算方式是与结论一所对应的方式,即找出最大的非nil值连续区间的末尾元素,

    返回末尾元素的索引。

    而table4 如果也使用此规则则应该返回的是 数值154 对应的索引 6,而实际返回的结果却是 8

    来看DeepSeek给出的可能性分析:

image

​ 因此可知,lua对于非nil结尾的含有nil的table 的# 求取长度的结果不定性。

总结:

在 Lua 中,# 运算符不适合用于含 nil 空洞的数组

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
  • 便捷打包Instant Asset脚本

    便捷打包Instant Asset脚本

    使用说明 将脚本放在Assets/Editor目录下 在需要打包同一个table的资源要放在同一...
  • Tuanjie InstantAsset

    Tuanjie InstantAsset

    InstantAsset InstantAsset 是一套全新的资产解决方案,旨在提升开发者的开发和运行...
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信