Métodos Ruby Hook

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: 

  1. Incluido
  2. antepuesto
  3. Extendido
  4. Heredado
  5. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *