For/while 使用 f 字符串循环

For/while loop with an f-string

如何正确执行 returns 作为 f 字符串的 for 循环(如 Python。)

例如,

for i=10, 1, -1 do
test = string.gsub('checkbox[val = "a"]','a', i)
return test
end

Returns

checkbox[v10l = "10"]

然而,我期待:

checkbox[val = "1"]
checkbox[val = "2"]
..
..
checkbox[val = "10"]

老实说,我不确定你想在这里做什么。 Lua 不支持 f 弦,而您正尝试 return 从函数多次?

这可能是最接近您想要的:

for i=1, 10 do
    print(string.format('checkbox[val = "%d"]', i))
end

您正在执行以下操作:

  1. 运行 for 从 10 循环到 1,与您想要的方向相反。
  2. 用循环变量替换 checkbox[val = "a"] 中所有出现的字符串 a,为您提供结果字符串并将其分配给(全局,这不好)变量 test.
  3. 正在返回刚刚得到的字符串,从而退出循环和包含循环的函数。

如果您尝试将多个值从循环传递到外部世界,您可以执行以下操作之一:

  1. 将它们添加到table和return中:
local tab = {}
for i=1, 10 do
    tab[i] = string.format('checkbox[val = "%d"]', i)
end
return tab
  1. 接受回调,所以调用者传入一个函数来调用每个值:
function example(cb)
    for i=1, 10 do
        cb(string.format('checkbox[val = "%d"]', i))
    end
end

example(print) -- Here, we pass `print` as a callback, but it's usually your own function

选择更适合您特定界面的内容。