In Ruby, is there a way to 'override' a constant in a subclass so that inherited methods use the new constant instead of the old?

后端 未结 3 659
我寻月下人不归
我寻月下人不归 2020-12-10 00:29

In Ruby, is there a way to \'override\' a constant in a subclass in such a way that calling an inherited method from the subclass results in that method using the new consta

3条回答
  •  無奈伤痛
    2020-12-10 01:00

    You can refer to a constant like this in the parent class:

    For a instance method: self.class::CONST

    For a self method: self::CONST

    class SuperClass
      CONST = "Hello, world!"
      def print_const
        puts self.class::CONST
      end
    
      def self.print_const
        puts self::CONST
      end
    
    end
    
    class SubClass < SuperClass
      CONST = "Hello, Bob!"
    end
    
    SubClass.new.print_const #=> "Hello, Bob!"
    SubClass.print_const #=> "Hello, Bob!"
    

提交回复
热议问题