Lua:为什么我的表在一个remove后变为了nil?

以下是我用来指示哪些项目(在本例中为MUD中的MOB)不在我的表格数据库中的脚本的一部分。

假设所有未定义的函数按预期工作且不是根本原因。“%1”、“%2”和“%3”是通过触发器传递的参数。本质上,如果这是一个函数,这三个参数将被称为foo(blah,bleh,blargh)。

问题

如果我键入“mqmob”(触发上述脚本),它将在房间中显示哪些MOB尚未添加到我的表格中。然后,我使用“mqmob ”将mob添加到该表中。但是,一旦完成这项工作,该脚本就无法工作,而无论表上最初有多少项,“mqmob”都会返回“nil”。为什么存储一个信息后表格就完全被清除了呢?

示例

我进入一个房间,看到以下内容:

A rat dwells here.
A mouse chases after some cheese.
A spider makes its home in the corner.
A flea leaps about playfully.

假设我仅将“A spider makes its home in the corner.” 添加到数据库中。其余三个描述都被放入了“mqtable”中,当我调用“mqmob”时,它会显示:

1="A rat dwells here."
2="A mouse chases after some cheese."
3="A flea leaps about playfully."

现在,我键入mqmob 1 20 rat,以创建具有{level = 20、keywords = rat}的mobtable["A rat dwells here."]。但一旦我这样做,如果再次键入“mqmob”,它就会返回“nil”。

变量说明

mobtable只是一个包含“mob's description”作为键的表格,其对应的“level”和“keywords”作为值。例如:

mobtable = {"A rat nibbles on some cheese." = {keyword = "rat", level = 20}}

mqtable仅在mobtable中没有相应匹配项时填充。基本上,触发器启动,与mobtable中的键进行比较,如果未找到,则填充mqtable。这是为了帮助我避免不必要的工作,添加已经在mobtable中的mob。

我遇到的问题是,我会添加一个mob,但当我第二次运行打印命令时,它会返回“nil”。但是,我仍然可以添加和查看mqtable中的单个索引。它只是似乎不能再打印出来了。

点赞