Lua的元表类的析构

我有以下的Lua元表类,我怎么可以添加一个析构函数所以当某个条件到达时,它会销毁所创建的对象,并设置它的值为零?

------------------------------------------------- -- Arrow class ------------------------------------------------- local arrow = {} local arrow_mt = { __index = arrow } -- metatable function arrow.new(x, y) -- constructor local newArrow = { position = { x = x, y = y } } return setmetatable( newArrow, arrow_mt ) end function arrow:remove() -- remove the object here -- self = nil dosent work end

--------------解决方案-------------

由于尼科尔表示,一旦一个变量到达您的对象的引用,对象本身无法控制的变量(即设置它的值为零 )。 其实, 是一个很好的事情-想象有人的地方保存参考,你反对一个局部变量。 突然在一个未知的时刻,它会变成一个引用(因为它被摧毁别的地方),并把它的任何进一步的访问导致错误。

这是一个令人失望的,我需要摧毁马上对象。

你真的需要破坏对象吗? 为什么? 不是Lua的垃圾收集器做的工作是否正确? 是不是有另一种方式来设计对象之间的关系?

例如,在最简单的情况下,可以通过强制垃圾收集collectgarbage("collect") 垃圾收集将清除所有对象,有对他们没有强烈的引用。 如果你真的想要的变量消失了,让他们处于弱势表。 当然,Lua的将自动进行垃圾回收,而你分配对象(除非你将其停止)。 还可以修改垃圾收集的速度。

你不能。 Lua是不是C / C ++; 它使用垃圾收集。 因此,你必须依赖垃圾回收; 你的对象的用户,当它消失了控制。 它是由他们时,他们会用它做丢弃它们的引用它。

因此,尽管你可以有一个明确的“新”(虽然你不应该称呼它),你不会有一个明确的“删除”。 当对象不再被引用会发生破坏。

分类:接力 时间:2012-01-01 人气:2
分享到:

相关文章

  • Lua的元表对象无法从内存中清除? 2013-06-12

    我使用的是专有平台报道的实时屏幕上的内存使用情况. 我决定用一个Class.lua我发现http://lua-users.org/wiki/SimpleLuaClasses 但是,我通过清除此创建对象时使用一个简单的Account类注意到内存问题. 具体来说,我将开始与说使用的内存146k,创建1000个对象,仅仅拥有一个整数实例变量类的每个对象存储到一个表中. 使用的内存现在是30万 然后,我会退出,通过遍历表,并在表中设置的每个元素为零. 但是,永远不会回来了146k,通常我使用类似210K

  • 是的Lua有趣的,从编程语言设计的角度来看? 2012-08-08

    Lua中占据的语言,可以嵌入空间的好去处. 这是有趣的新思路实现者有,或者是很好的执行既定观念的结果,一个结果呢? Lua中的性能和功能等伪卫星的比较是尤为适宜. --------------解决方案------------- 是的Lua有趣的,从编程语言设计的角度来看? 是的!我的日常工作是学习编程语言,和Lua将偿还仔细研究. 我要说的是对极少数其他语言(或者图标,CLU). 请注意,这是语言作为一个整体 ,而不是个人的特点,这使得Lua所以值得研究的问题. 这是有趣的新思路实现者有,或者是

  • LUA:如何设置一个变量为零 2012-11-30

    我有一个包含若干个变量. 虽然Lua的允许变量被设置为nil ,变量就变成有毒的-摧毁其路径中的所有代码. 如果一个变量包含一个nil ,我希望它转换成一个零. local score; score = gameResults.finalScore; 我想,以确保score包含了一些,所以我尝试: local score; score = tonumber(gameResults.finalScore); 但是,这并不工作. 所以我尝试: local function ToNumberEx(v)

  • 难道有意义的Lua的虚拟机运行JavaScript? 2013-02-12

    Lua是小,可以方便地嵌入. 目前的JavaScript虚拟机是相当大的,很难集成到现有的应用程序. 所以,那岂不是可以通过编译JavaScript来的Lua或Lua语言的字节码? 特别是对于移动应用的限制,这似乎是一个不错的选择. 能够最容易流行的脚本语言之一集成到任何iPhone或Android应用程序将是巨大的. 我不是很熟悉的Lua,所以我不知道这是技术上是可行的. 随着Luvit有一个活跃的项目试图端口Node.js的架构到Lua. 因此,事件触发JavaScript的世界不能太远离什

  • 如何元表的工作,它们是什么用的呢? 2013-09-02

    我有这样一个问题,关于Lua的元表. 我听说,看着他们,但我不知道如何使用它们为了什么. --------------解决方案------------- 元表是被在一定条件下被调用函数. 就拿元表索引"__newindex"(两个下划线),当您分配一个函数来此,该函数将被调用时,你永远添加一个新的索引表,等等; table['wut'] = 'lol'; 这是一个使用'__newindex'定制元表的一个例子. ATable = {} setmetatable(ATable, {__n

  • Lua的COM编程 2014-04-07

    任何人都知道的,显示COM编程通过Lua的任何例子吗? 可能需要一个图书馆. 我需要写一些外部脚本的Photoshop,所以想知道是否有可能和Lua. --------------解决方案------------- 有一个在Lua中的Windows. 它包含LuaCOM. 我还没有尝试过自己,但. 正如gimpf说,看看LuaCOM. 你可以把它从它的官方网站,这是最新的版本(1.4). 地方解压缩,并看看文件夹"演示",其中包括示例: ADO 幻灯片 SAPI(语音API) WMI

  • 其中开放源代码计划是整合C ++和Lua的好例子? 2014-09-27

    有一些关于Lua中很不错的书. 他们所不能覆盖的大画面,当涉及到实际的应用程序(文档/视图类型的应用程序). 有趣的事情都是围绕这些问题: 使用C ++在Lua或Lua语言在C ++? 谁得到主循环? 怎么玩哪里? 如何为模型(Document)和Lua国家保持同步? 如果模型转换为LUA数据,并通过向国家和取回? 还是应该由Lua的状态直接在模型上通过大量的访问功能的行为吗? ...也许更多. 因此,我的问题:哪些开放源代码progams是值得以了解这些方面进行研究? ------------

  • 嵌入的JavaScript易于 2012-03-20

    我期待到脚本语言嵌入到一个应用程序. 我一直认为的Lua是最好的选择,但我读过有关嵌入V8的一些最近的新闻,并使用它来代替正在考虑. 我的问题是双重的: 有没有人有经验的嵌入V8(或任何JavaScript引擎)的建议呢? 它是如何与嵌入的Lua比较? 我喜欢V8拥有C ++ API嵌入. 然而,Lua的API是已经有很多时间来进行细化(更新并不总是更好和所有). 注:我不关心它的语言/库是更好的或具有更好的性能. 我只问易于嵌入. --------------解决方案-------------

  • LuaJIT 2优化指南 2013-10-19

    我在寻找如何优化Lua代码为LuaJIT 2.应注重细节LJ2,怎么样来检测一个很好的指南,痕迹都被编译,哪些不是,等等. 任何指针? 链接到Lua ML帖子收藏会做一个答案(在这里总结这些链接加分.) 更新:我已经改变了从"分析"到"优化"指南标题文本,因为这更有意义. --------------解决方案------------- 更新 迈克最近建立和释放一个美妙的轻质分析器为LuaJIT,你可以在这里找到. 更新 维基已经获得了在这一领域几页,特别是这一次,详

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.346 (s). 10 q(s)