Lua 面试题 目录

Lua 中如何获取 table 的长度?

推荐答案

在 Lua 中,获取 table 的长度可以通过 # 操作符来实现。例如:

# 操作符返回的是 table 中连续整数索引的元素个数。

本题详细解读

1. # 操作符的工作原理

# 操作符用于获取 table 的长度,但它只计算从索引 1 开始的连续整数索引的元素个数。例如:

如果 table 中有非连续整数索引或非整数索引的元素,# 操作符不会计算这些元素。例如:

2. 处理非连续索引的 table

对于非连续索引的 table,# 操作符可能无法正确返回 table 的长度。此时可以使用 pairs 函数来遍历 table 并手动计算长度:

3. 注意事项

  • # 操作符只适用于数组部分的 table,即索引为连续整数的 table。
  • 如果 table 中有 nil 值,# 操作符可能会返回不准确的结果。
  • 对于混合类型的 table(包含数组和哈希部分),# 操作符只计算数组部分的长度。

4. 其他获取 table 长度的方法

除了 # 操作符,还可以使用 table.getn 函数来获取 table 的长度,但该函数在 Lua 5.1 之后已被弃用,推荐使用 # 操作符。

不过,table.getn 的行为与 # 操作符相同,因此在 Lua 5.1 及之后的版本中,建议直接使用 # 操作符。

纠错
反馈