lua:在 1 个 if 语句中搭载多个变量
lua: piggybacking multiple variables across 1 if statement
我有大约 7 个以上的变量:a=1、b=10、c=12...等等
我需要为每个执行此操作的人编写一个 if 语句:
if var>0 then var-=1 end
如果我需要每个变量在每次迭代后记录它们的值,有没有办法避免为每个变量写一个 if 语句?
我尝试在 table 中定义它们,例如:
a=1;b=2;c=3
local t = {a,b,c}
for _,v in pairs(t) do
if v>0 then v-=1 end
end
a,b,c=t[1],t[2],t[3]
这段代码失败了,不知道为什么。最终我正在寻找比简单地编写 ifs 更有效的方法。您可以根据成本或令牌或两者来定义效率。使用的值是随机的,没有模式。变量名称可能会更改,即 a_1、a_2、a_3,但它并不理想。
您忘记将新值分配给 table!
local a, b, c = 1, 2, 3
local t = {a, b, c}
for k, v in ipairs(t) do
if v > 0 then v -= 1 end
t[k] = v
end
a, b, c = t[1], t[2], t[3]
print(a, b, c)
有几个解决方案。为了缩短您的代码,您可以编写一个函数来处理每个变量的值和 运行 它:
local function toward0(var)
if var > 0 then
return var - 1
end
return var
end
a = toward0(a)
b = toward0(b)
c = toward0(c)
您还可以将数据存储在 table 而不是变量中。然后你可以循环处理它们:
local valuesThatNeedToBeDecremented = {a = 1, b = 10, c = 12}
for k, v in pairs(valuesThatNeedToBeDecremented) do
if v > 0 then
valuesThatNeedToBeDecremented[k] = v - 1
end
end
我有大约 7 个以上的变量:a=1、b=10、c=12...等等
我需要为每个执行此操作的人编写一个 if 语句:
if var>0 then var-=1 end
如果我需要每个变量在每次迭代后记录它们的值,有没有办法避免为每个变量写一个 if 语句? 我尝试在 table 中定义它们,例如:
a=1;b=2;c=3
local t = {a,b,c}
for _,v in pairs(t) do
if v>0 then v-=1 end
end
a,b,c=t[1],t[2],t[3]
这段代码失败了,不知道为什么。最终我正在寻找比简单地编写 ifs 更有效的方法。您可以根据成本或令牌或两者来定义效率。使用的值是随机的,没有模式。变量名称可能会更改,即 a_1、a_2、a_3,但它并不理想。
您忘记将新值分配给 table!
local a, b, c = 1, 2, 3
local t = {a, b, c}
for k, v in ipairs(t) do
if v > 0 then v -= 1 end
t[k] = v
end
a, b, c = t[1], t[2], t[3]
print(a, b, c)
有几个解决方案。为了缩短您的代码,您可以编写一个函数来处理每个变量的值和 运行 它:
local function toward0(var)
if var > 0 then
return var - 1
end
return var
end
a = toward0(a)
b = toward0(b)
c = toward0(c)
您还可以将数据存储在 table 而不是变量中。然后你可以循环处理它们:
local valuesThatNeedToBeDecremented = {a = 1, b = 10, c = 12}
for k, v in pairs(valuesThatNeedToBeDecremented) do
if v > 0 then
valuesThatNeedToBeDecremented[k] = v - 1
end
end