如何通过将新实例推送到数组来跟踪类对象,并允许该数组由另一个类的对象编辑/弹出。
例如;
物体'飞机' (平面类)被创建,并被推送到一个名为' in-flight'。
的数组
对象'机场' (机场班)要求它从阵列着陆和弹出。
有没有办法这样做,有和/或没有使用类变量?
答案 0 :(得分:1)
您可以通过覆盖initialize
类的Airplane
方法来完成此操作。像这样:
class Airplane
class << self
attr_accessor :in_flight
end
self.in_flight ||= []
def initialize(*)
self.class.in_flight << self
super
end
def land!
self.class.in_flight.delete(self)
end
end
然后,从代码库中的任何其他位置开始,执行以下操作:
# We'll just pick a random airplane from the list of those in
# flight, but presumably you would have some sort of logic around
# it (already have an Airplane instance somehow, select one from
# the array according to some criteria, etc).
airplane = Airplane.in_flight.sample
airplane.land!
不确定这是世界上最好的应用程序设计,但如果您的需求很简单,它肯定会有用。