의 삭제에 방법을 실행내가 루비를 배우고와 동등한 <code>object.delete</code> 기능을 오버라이드 (override) 할 수있는 방법을 발견하지 않은 개체
이것은 어떻게 내가 그 일을하고있다 : 당신으로
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'] (http://www.ruby-doc.org/stdlib-2.0/libdoc/weakref/rdoc/WeakRef.html). –
@RubyLovely, WeakRef는 내가 성취하려는 것을 달성하는 가장 쉬운 방법 인 것 같습니다. – hamhut1066
오케이! 잘 했어! 따라서 해당 라이브러리가 목표를 달성하는 데 도움이된다면 최종 사용자가 향후 이점을 누릴 수 있도록 여기에 최종 코드를 게시하십시오. –