lua - 删除lua中的self

标签 lua love2d

我目前正在 Love2D 中开发一款游戏,并使用称为 middleclass 的 OOP 库。不幸的是,中间类默认没有析构函数,即允许我销毁对象的东西。我将所有对象存储在一个表中,以便我可以循环遍历它们并执行它们的绘制和更新函数。在我的代码中,我希望该对象能够自行删除。我已经尝试过了

self = nil

但这不起作用!是否可以找到表中的对象键,而无需循环查找它,然后仅使用 table.remove ?这仍然不是最理想的,就好像将来有引用一样,我也必须将其从这些表中删除。 如何实现这一目标?

最佳答案

您可以将对象保存在由对象本身索引的表中:cache[obj] = obj 。然后要从游戏中删除该对象,您只需执行 cache[self] = nil并且(假设没有其他对该对象的引用)它将在一段时间后被垃圾收集。

如果您有其他地方引用该对象,您可以检查是否使用 "weak" tables适合您的用例。

关于lua - 删除lua中的self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274561/

相关文章:

lua - 不同的答案 SHA-256 代码(在线生成器 - Lua 脚本)

Lua:如何在所有表上创建自定义方法

mysql - Lua 插入语句

lua - 限制绘图到一个区域

lua - Lua中的模块化代码结构

function - 函数内的全局 require 和局部 require 之间有区别吗

lua - 为什么 lua require 不会搜索当前目录?

oop - 我如何在 lua love2d (OOP) 中使用类

arrays - 在Lua中寻址数组中的索引

networking - luasocket 的 settimeout() 是如何工作的?