使用f-string进行for/while循环

如何正确执行返回为f-string的for/while循环(如Python中)。

例如,

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

返回

checkbox[v10l = "10"]

但是,我期望的是:

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

原文链接 https://stackoverflow.com/questions/70500638

点赞
stackoverflow用户5697743
stackoverflow用户5697743

我实际上不确定你在尝试做什么。Lua不支持f-strings,你正在尝试从函数返回多次?

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

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

你正在做以下事情:

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

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

  1. 将它们添加到表中并返回:
local tab = {}
for i=1, 10 do
    tab[i] = string.format('checkbox[val = "%d"]', i)
end
return tab

2.接受回调,因此调用方传递要对每个值调用的函数:

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

example(print) -- 这里,我们将`print`作为回调传递,但通常是您自己的函数

选择更适合您特定接口的选项。

2021-12-27 22:01:15