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 に答える