【发布时间】:2013-05-31 17:16:52
【问题描述】:
我正在学习 ruby,但还没有找到一种方法来覆盖等效的 object.delete 函数:
这就是我的做法:
class Foo
@@no_foo=0
def initialize
@@no_foo+=1
end
def delete
#class specific cleanup...
@@no_foo-=1
end
def Foo.no_foo
return "#@@no_foo"
end
end
def delete(obj)
#object independent cleanup...
obj.delete
return nil
end
foo1 = Foo.new
foo2 = Foo.new
puts Foo.no_foo
puts foo2
foo2 = delete(foo2)
puts foo2
puts Foo.no_foo
如您所见,这是一种有点古怪的处理方式......
有没有更简单的方法来解决这个问题?
基本上,我想在减少该类的总计数器的同一调用中使我的对象无法访问。
我找不到在将变量(指向对象的指针)设置为 nil 时调用的方法。
我找不到删除对象的方法。
【问题讨论】:
-
我不明白,您的具体要求是什么。但你可以看这里 -
WeakRef. -
@RubyLovely,WeakRef 似乎是完成我想要实现的目标的最简单方法。
-
好的!那就好!因此,如果该库可以帮助您实现目标,那么也请在此处发布最终代码,以便未来的用户可以通过看到它来利用它。