1

我有一组变量,其中包含数量信息和 x 来选择我使用的变量。如何连接字母 s 和 var x 并将其读取为 s2 或 s3 等。我设法找到的代码不起作用。

x = 2 
s1 = false
s2 = 64
s3 = 64
s4 = 64
s5 = 0

if s2 >= 0 then
x = 2
elseif s3 >= 0 then
x = 3
elseif s4 >= 0 then
x = 4
elseif s5 >= 0 then
x = 5
end

if turtle.placeDown() then
 tryUp()
 turtle.select(1)
 _G["s"..x] = _G["s"..x] - 1 
end
4

1 回答 1

0

为什么你需要这样做?

我改进代码的建议是这样的:

local s = {false, 64, 64, 64, 0}

for i = 2, #s do
  if s[i] >= 0 then
    x = s[i]
  end
end

if turtle.placeDown() then
  tryUp()
  turtle.select(1)
  x = x-1
end

使用循环使代码更加整洁,并且没有真正需要使用全局变量。如果您坚持将 _G 与原始代码的字符串连接一起使用,请尝试以下操作:

x = 2 
s1 = false
s2 = 64
s3 = 64
s4 = 64
s5 = 0

if s2 >= 0 then
x = "2" --Notice the string here
elseif s3 >= 0 then
x = "3"
elseif s4 >= 0 then
x = "4"
elseif s5 >= 0 then
x = "5"
end

if turtle.placeDown() then
 tryUp()
 turtle.select(1)
 _G["s"..x] = _G["s"..x] - 1 
end

这会将所有 x 值替换为字符串而不是数字,这可能是导致错误的原因

于 2014-12-18T04:07:25.420 回答