1

4 つの値を含むテーブルがあります。

例えば:

2
4
1
3

関数を使用して、探しているテーブルをステップ実行します。ペアを使用して番号 1 を言い、テーブル内の位置を取得します。

次に、table.remove を使用してその位置から 1 を削除します。私が今やりたいことは、テーブルを圧縮して、3 つの値の長さ 2 4 3 にすることです。

私はLUAにかなり慣れていないので、優しくしてください。:)

私が持っているのはほとんどこれです:

CloseRandomConsole = math.random(1,(#ConsoleTable)) 

If CloseRandomConsole == 1 then 
 for key, value in pairs(ConsoleTable) do 
 if value == "1" then 
  table.remove(ConsoleTable, key) 
 break 
 end 
end 

どこが間違っているかはわかりますが、それを解決する方法がわかりません。

math.random(1,(#ConsoleTable))

テーブル内の値のいずれかの間でランダムにできるようにしたいだけです。そして、その vlue をランダム化したら、それを削除して、ランダム化する他の 3 つの値が残るようにします。

私はあなたを混乱させていますか?:)

4

1 に答える 1

2

どう言う意味ですか?

s = {2,4,1,3} -- the table
for k,v in pairs(s) do 
  if v==1 then 
     table.remove(s,k)
  end
end

print(#s) -- is now 3
for k,v in pairs(s) do print(v) end -- just the 3 values ...

@Vitae: 何かについて尋ねるときは、どのようにやりたいかではなく、何をしたいかを説明する必要があります。特に、自分が何をしているのかわからない場合は...

たぶん、テーブルからランダムな値を削除したいですか? 次に、ランダムなインデックスで値をフェッチします...

function poprandom( t )
  local idx = math.random(1,#t)
  local ret = t[idx]
  table.remove(t, idx)
  return ret
end
于 2010-12-04T15:52:03.587 に答える