gpt4 book ai didi

ruby - 每次引用一个对象时调用一个方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:00 25 4
gpt4 key购买 nike

假设我有一个类如下

class MyClass < Array
def clean_up
#clean up array
end
end

以下是它的一些使用示例:

obj = MyClass.new

#I call some methods on obj

a = obj #1
obj #2
obj.some_method #3
f = obj[0] #4

有什么方法可以强制调用 clean_up,只有在返回对象本身时(即没有方法调用它)。

更具体地说,我希望在情况 1 和 2 中调用 clean_up,但在情况 3 和 4 中不调用。

我该怎么做呢?是否有一些我可以覆盖的隐式方法,或者在 ObjectBasicObject 类中是否有一些我可以利用的功能?

注意:在情况 1 和 2 中,返回实际对象,但在情况 3 和 4 中,不返回对象。请参阅评论以获取有关我的具体目标的信息。

最佳答案

您可以定义一个方法来访问该对象:

class MyClass < Array
def clean_up
puts 'cleaning up the array now'
end

def get
clean_up
self
end
end

m = MyClass.new
m.get.class
# cleaning up the array now
# => MyClass

关于ruby - 每次引用一个对象时调用一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21971926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com