How to get attributes that were defined through attr_reader or attr_accessor

前端 未结 6 1584
温柔的废话
温柔的废话 2020-12-15 05:10

Suppose I have a class A

class A
  attr_accessor :x, :y

  def initialize(x,y)
    @x, @y = x, y
  end
end

How can I get

6条回答
  •  情书的邮戳
    2020-12-15 05:55

    class A
      ATTRIBUTES = [:x, :y]
      attr_accessor *ATTRIBUTES
    
      def initialize(x,y)
        @x, @y = x, y
      end
    
      def attributes
        ATTRIBUTES.map{|attribute| self.send(attribute) }
      end
    end
    

    This may not be the DRY-est, but if you are only concerned with doing this for one class (as opposed to a base class that everything inherits from), then this should work.

提交回复
热议问题