Lua 面试题 目录

Lua 中的泛型 for 循环如何使用?

推荐答案

在 Lua 中,泛型 for 循环通常与迭代器函数一起使用,遍历表或其他可迭代的数据结构。其基本语法如下:

  • var1, var2, ...:每次迭代返回的值。
  • iterator_function:迭代器函数,每次调用返回下一个值。
  • state:迭代器的状态,通常是一个表或用户数据。
  • initial_value:迭代的初始值。

示例代码

-- -------------------- ---- -------
-- ---
----- - - -- - -- - - -- - - --

--- ---- ----- -- -------- --
    ---------- ------
---

-- ----
----- --- - ---- --- ---

--- ------ ----- -- ----------- --
    ------------ ------
---

本题详细解读

1. 泛型 for 循环的工作原理

泛型 for 循环依赖于迭代器函数。每次循环时,Lua 会调用迭代器函数,并传入状态和当前值。迭代器函数返回的值会被赋值给循环变量,直到迭代器函数返回 nil,循环结束。

2. 常用的迭代器函数

  • pairs(table):用于遍历表的所有键值对。
  • ipairs(table):用于遍历数组的索引和值,从 1 开始直到遇到 nil

3. 自定义迭代器

你也可以编写自定义的迭代器函数。例如,以下是一个简单的自定义迭代器,用于遍历一个范围内的数字:

-- -------------------- ---- -------
-------- ------------ ----- -----
    ----- - - ----- - ----
    ------ ----------
        - - - - ----
        -- - -- ---- ----
            ------ -
        ---
    ---
---

--- - -- -------- --- -- --
    --------  -- -- -- -- -- -- -
---

4. 注意事项

  • 泛型 for 循环比数值 for 循环更灵活,适用于各种数据结构。
  • 使用 pairs 时,遍历顺序是不确定的,因为 Lua 表的键值对是无序的。
  • 使用 ipairs 时,遍历顺序是确定的,从索引 1 开始,直到遇到 nil
纠错
反馈