【问题标题】:Lua issue with table length? [duplicate]表长度的Lua问题? [复制]
【发布时间】:2015-04-22 01:30:53
【问题描述】:

我在玩 Lua 表时发现:

local t1 = {1, 5, nil, 10}
local t2 = {1, 5, nil, 10, nil}

print(t1[5], t2[5]) --> nil   nil
print(#t1, #t2) --> 4   2

我原以为两张表的长度都是 4,但 t2 的长度竟然是 2。谁能解释一下?

【问题讨论】:

  • 调用# 序列长度运算符ipairs 序列迭代器更容易。 你的两个表都没有序列。 (# 即使在没有序列的表上调用时也返回非负整数似乎是一个未说明的要求。)所有这些行为都支持序列的时间和空间优化。

标签: arrays lua lua-table


【解决方案1】:

在 Lua 中,我们经常假设一个数组在它的第一个 nil 元素之前结束。这种约定有一个缺点:数组中不能有 nil。 [...] 但有时我们必须允许在数组中使用 nil。在这种情况下,我们需要一种方法来保持数组的显式大小。

来自Programming in Lua 19.1

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 2015-05-28
    • 2018-03-07
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2014-09-17
    相关资源
    最近更新 更多