如何在这里增加 `k` 的值?

我试图在 for 循环中这样增加 k 的值:

t = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

for k = 1, #t do
    if k == 1 then
        print(t[1])
    else
        print(t[k], t[k + 1], t[k + 2])
        k = k + 2
    end
end

但它不起作用!如何在 else 块中增加这个 k 的值?

点赞
用户10239789
用户10239789

for-循环中使用的计数器变量不会在迭代之间传播。考虑下面的例子:

for i=1, 3 do
    print(i)
end
-- 1
-- 2
-- 3

再看下面的例子:

for i=1, 3 do
    print(i)
    i = i+1
    print(i, '\n')
end
-- 1
-- 2
--
-- 2
-- 3
--
-- 3
-- 4

请注意,前面的值(1,2,3)没有变化。

解决方法是将 for-循环转换为 while-循环,从而更自由和更好地控制变量。

k = 1
while k < #t do
    if k == 1 then
        print(t[1])
    else
        print(t[k], t[k+1], t[k+2])
        k = k + 2
    end
    k = k + 1
end
-- 1
-- 2    3   4
-- 5    6   7
-- 8    9   10
2019-06-03 05:58:01