如何在模块中创建类变量?

时间:2017-02-20 17:53:58

标签: ruby class module

我有模块

module M
  def self.included(base)
    base.extend ClassMethods
  end

  module ClassMethods
    def m(val)
      # todo
    end
  end
end

我上课了

class A
  include M
end

来自m的方法module M必须在我调用它时在类变量val中推送arr

A.m(1)
A.m(2)
A.m(3)
A.arr # => [1, 2, 3]

我该怎么做呢?

我有下面的解决方案,但我不确定它是最好的。

module M
  def self.included(base)
    base.extend ClassMethods
  end

  module ClassMethods
    attr_accessor :arr
    def m (val)
      self.arr ||= []
      arr << val
    end
  end
end

0 个答案:

没有答案