【问题标题】:Why length is different in Lua为什么Lua中的长度不同
【发布时间】:2014-03-30 08:09:46
【问题描述】:

我正在为 Corona sdk 学习 Lua,我有这些

local type1 = {nil, "(", nil, "x" ,nil , ")" ; n=6}
local type2 = {"(",nil, "x",nil, ")",nil ; n=6}
print(#type1)   --prints 6
print(#type2)   --prints 3

为什么第二个也不是6??

【问题讨论】:

    标签: lua coronasdk lua-table


    【解决方案1】:

    # 运算符不适用于每个表,它仅适用于序列,即对于某个整数 n,其正数键的集合等于 {1..n}。在这种情况下,n 是它的长度。例如,local t = {"hello", 42, true} 是一个序列。

    但是你的两个表都不是序列,因为它们有nil的“洞”。

    见Lua 5.2 Reference Manual: The length operator。

    【讨论】:

    • 我尝试使用 table.getn() 仍然打印相同,那么如何正确计算数组?
    • @Kossel 你的意思是你想获得包括那些你初始化为nil的值的数量?不能,因为某个键的 nil 值相当于在该键上没有值。
    • 换一种说法:将nil 赋值给一个值本质上与删除该值处的条目相同。
    • 那为什么首先正确打印 6 个元素?那是奇怪的语言:/
    • @Kossel 因为它是未定义的。考虑这一系列输出:pastebin.com/Y8rqgq3kLua 根本不会尝试错误检查一个序列是否真的会有一个合理的“长度”——它只是返回它返回的内容,你只能使用它在有意义的事情上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2021-08-27
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多