For 循环

Time:5 分钟

泛型 for循环是一种利用迭代器函数的 for 循环。在学习此循环之前,你应该了解基本的 for 循环。

有状态迭代器

首先,让我们看看迭代器。通俗地说,迭代器是一个函数,每次调用它时都返回下一组值。下面是一个生成简单迭代器的函数:

-- 返回一个迭代器,该迭代器计算首尾之间的字母
function letterIterator(first, last)   
    -- 存储迭代器所在的位置
    local index = first 
    -- 返回迭代器——一个函数!
    return function()
        if index <= last then
            -- 移至下一个角色
            index = index + 1  
            -- 返回 index plus 95 的 ascii 表示形式(一个字母)
            -- 请注意,仅返回一个值
            return string.char(index + 95)
        end
    end
end

下面是我们如何使用它:

local iterator = letterIterator(1, 4)
local letter
 
letter = iterator()
print(letter) -- **a**
 
letter = iterator()
print(letter) -- **b**
 
letter = iterator()
print(letter) -- **c**
 
letter = iterator()
print(letter) -- **d**
 
letter = iterator()
print(letter) -- nil
 
letter = iterator()
print(letter) -- nil

如你所见,迭代器返回第一个、第二个、第三个和第四个字母,然后停止返回任何内容。此时,没有任何要迭代的内容,因此你应该停止调用迭代器。这就是泛型 for 循环的来源。我们可以这样编写前面的代码:

Roblox官方链接:For 循环