跟踪Ruby中的类对象

时间:2015-09-06 19:09:35

标签: arrays ruby class object

如何通过将新实例推送到数组来跟踪类对象,并允许该数组由另一个类的对象编辑/弹出。

例如;

  •   

    物体'飞机' (平面类)被创建,并被推送到一个名为' in-flight'。

    的数组
  •   

    对象'机场' (机场班)要求它从阵列着陆和弹出。

有没有办法这样做,有和/或没有使用类变量?

1 个答案:

答案 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!

不确定这是世界上最好的应用程序设计,但如果您的需求很简单,它肯定会有用。