How to get attributes that were defined through attr_reader or attr_accessor

前端 未结 6 1582
温柔的废话
温柔的废话 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:39

    Use introspection, Luke!

    class A
      attr_accessor :x, :y
    
      def initialize(*args)
        @x, @y = args
      end
    
      def attrs
        instance_variables.map{|ivar| instance_variable_get ivar}
      end
    end
    
    a = A.new(5,10)
    a.x # => 5
    a.y # => 10
    a.attrs # => [5, 10]
    

提交回复
热议问题