使用LUA:如何从表中删除一个项目?

我似乎找不到一个类似于这样的问题。

我有一个脚本,用于生成玩家名称(用于游戏),它通过将文件末尾附加为他们进入游戏来正确存储名称到文本文件(players.txt)中。没有排序。例如:

Player1
Player4
Player3
Player2

我如何从文本文件中删除玩家3?

我有一个名为currPlayers的变量,它是从Players.txt创建的表,我想稍后使用它。我应该搜索表并在玩家离开时将整个文件重写,还是只搜索文件本身?不确定哪个更好。

点赞
用户7509065
用户7509065

有两种不同的方式可以在表格中放置玩家。

选项1:

players = {Player1 = true, Player4 = true, Player3 = true, Player2 = true}
-- 或等价于
players['Player1'] = true
players['Player4'] = true
players['Player3'] = true
players['Player2'] = true

如果您的表格是这样设置的,那么只需执行 players['Player3'] = nil 就可以删除 Player3

选项2:

players = {'Player1', 'Player4', 'Player3', 'Player2'}
-- 或等价于
players[1] = 'Player1'
players[2] = 'Player4'
players[3] = 'Player3'
players[4] = 'Player2'

如果您的表是这样设置的,那么可以使用 ipairs 循环和 table.remove 删除 Player3,如下所示:

for k,v in ipairs(players) do
    if v == 'Player3' then
        table.remove(players, k)
        break
    end
end
2020-05-12 20:55:53