Los métodos Ruby Hook se llaman en reacción a algo que haces. Por lo general, se utilizan para ampliar el funcionamiento de los métodos en tiempo de ejecución. Estos métodos no están definidos por defecto, pero un programador puede definirlos de acuerdo con su implicación en cualquier objeto, clase o módulo y aparecerán en la imagen cuando ocurran ciertos eventos.
Estos métodos ayudan a extender el comportamiento de los fundamentos cuando se llaman métodos o se forman subclases de una clase o se incorporan módulos. La capacidad de metaprogramación del lenguaje Ruby ayuda a los usuarios a escribir cómodamente códigos dinámicos en tiempo de ejecución.
Los Métodos Hook pueden realizar una determinada función una vez que se ha ejecutado una acción en particular.
Hay varios métodos Ruby Hook, pero principalmente, los siguientes tienen un papel importante que desempeñar:
- Incluido
- antepuesto
- Extendido
- Heredado
- método_perdido
Módulos en Ruby
Antes de pasar por cada uno de los métodos, es necesario entender el concepto de módulos en Ruby. Los módulos son simplemente conjuntos de código que pueden escribirse una vez y usarse en varios lugares. Por lo general, se utilizan métodos de enganche para acceder a ellos y realizar cambios en ellos.
1. Incluido:
este método se utiliza para incluir un método, atributo o módulo en otro módulo. El método hace que el módulo subrayado esté disponible para las instancias de la clase. El siguiente ejemplo explica el uso y funcionamiento del método include.
El ejemplo es un código simple para generar un comentario cuando se ejecuta el módulo en la clase en la que está incluido.
Ruby
# Declaring a module to greet a person module Greetings def self.included(person_to_be_greeted) puts "The #{person_to_be_greeted} is welcomed with an open heart !" end end # Class where the module is included class Person include Greetings # implementation of the include statement end
Producción:
The Person is welcomed with an open heart !
2. Antepuesto:
Este método fue introducido por Ruby 2.0. Esto es ligeramente diferente de lo que observamos anteriormente. El método antepuesto proporciona otra forma de extender el funcionamiento de los módulos en diferentes lugares. Esto utiliza el concepto de anulación. Los módulos se pueden anular utilizando métodos definidos en la clase de destino.
El concepto de método antepuesto podría entenderse con el siguiente ejemplo que se explica por sí mismo:
Ruby
# Code as an example for prepend method module Ruby def self.prepended(target)# Implementation of prepend method puts "#{self} has been prepended to #{target}" end def Type "The Type belongs to Ruby" end end class Coding prepend Ruby # the module Ruby is prepended end # Method call puts Coding.new.Type
Producción:
Ruby has been prepended to Coding The Type belongs to Ruby
3. Extendido:
este método es un poco diferente de los métodos de inclusión y anteposición. Mientras que include aplica métodos en un determinado módulo a la instancia de una clase, extend aplica esos métodos a la misma clase.
La ejecución del código mencionado anteriormente usando el método extender se puede hacer de la siguiente manera:
Ruby
# Code as an example for extend method module Ruby def self.extended(target) puts "#{self} was extended by #{target}" end def Type "The Type is Ruby" end end class Coding extend Ruby # Extending the module Ruby end # Method calling puts Coding.Type
Producción:
Ruby was extended by Coding The Type is Ruby
4. Heredado: La
herencia como concepto es uno de los conceptos más importantes de la Programación Orientada a Objetos y es común en casi todos los lenguajes de programación. En Ruby, tratamos con objetos inspirados en la vida real y, por lo tanto, las operaciones de Ups juegan un papel muy importante allí. El método heredado se llama cada vez que se implementa una subclase de una clase. Es un método para crear una clase secundaria a partir de una clase principal.
El siguiente ejemplo muestra lo mismo:
Ruby
# Making the parent Vehicle class class Vehicle def self.inherited(car_type) puts "#{car_type} is a kind of Vehicle" end end # Target class class Hyundai < Vehicle #Inhereting the Vehicle class end
Producción:
Hyundai is a kind of Vehicle
5. method_missing:
método method_missing que es uno de los más utilizados en Ruby. Esto entra en acción cuando uno intenta llamar a un método en un objeto que no existe.
El siguiente ejemplo explica su funcionamiento:
Ruby
# The main class class Ruby def method_missing(input, *args) # method_missing function in action "#{input} not defined on #{self}" end def Type "The Type is Ruby" end end var = Ruby.new # Calling a method that exists puts var.Type # Calling a method that does not exist puts var.Name
Producción:
The Type is Ruby Name not defined on #<Ruby:0x0000000002363290> (object var)
Existe un concepto de devolución de llamada que a menudo se confunde con los métodos de enlace. Si bien las devoluciones de llamada son los elementos del código del programa, como métodos, módulos, etc., el gancho es solo un lugar en el código donde se accede a ellos. Por lo tanto, el concepto de devolución de llamada no debe confundirse con ganchos en Ruby.
Como sabemos, el lenguaje Ruby es un lenguaje de programación que tiene una correspondencia muy clara con los objetos y métodos de la vida diaria, se requiere que quien esté trabajando en el mismo tenga un conocimiento profundo de todos los conceptos necesarios de Oops y los métodos Hook. uno de ellos.
Publicación traducida automáticamente
Artículo escrito por muskangupta13 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA