如何正确有效地改变表的内容?

问题描述 投票:1回答:1

我试图随机改变桌子的内容。它工作正常,除非有时它不返回表的所有内容。我在洗牌前打印出桌子上的一些钥匙,然后他们返回零,但我不知道如何解决这个问题。这是Lua:

local tab = {1,2,3,4,5,6,7,8,9,10}

function ReturnRandomTable(t)
   local newt = {}
   local i = 1
   repeat
      local rand = math.random(1,#t)
      newt[i] = t[rand]
      print(t[rand]) --sometimes prints nil
      t[rand] = nil
      i = i + 1
   until #t == 0
   return newt
end

table.shuffle = function(t)
   local newt = ReturnRandomTable(t)
   for i = #t,1,-1 do
      t[i] = nil
   end
   return newt
end

local randt = table.shuffle(tab)
for _,v in pairs(randt) do
   print(v)
end

任何帮助,将不胜感激!

lua
1个回答
0
投票

通过将t[rand] = nil改为table.remove(t,rand)来解决。

© www.soinside.com 2019 - 2024. All rights reserved.