es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creación simultánea de métodos de instancia y de clase con el mismo nombre en una clase de Ruby.

¿Hay alguna manera de crear simultáneamente una clase y un método de instancia en una clase de Ruby que tengan el mismo nombre?
Tengo una versión de esto creada en la clase Foo

class Foo 
   def self.bar
       "hola mundo" 
   end

   def bar
       self.class.bar
   end
end

Aunque esto funciona, ¿hay una manera más elegante de lograr esto? Actualmente tendría que duplicar ~10 métodos como métodos de instancia y de clase.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma más elegante de lograr esto. Puedes usar la sintaxis class << self para definir métodos de clase dentro de una clase. Por ejemplo, el siguiente código creará un método de clase y un método de instancia con el mismo nombre:

    class Foo 
      class << self
        def bar
          "hola mundo" 
        end
      end
    
      def bar
        self.class.bar
      end
    end
    

Comments are closed.