Antes de estudiar sobre Ruby Mixins, debemos tener el conocimiento sobre conceptos orientados a objetos. Si no lo hacemos, revise Conceptos orientados a objetos en Ruby . Cuando una clase puede heredar características de más de una clase principal, se supone que la clase tiene herencia múltiple. Pero Ruby no admite la herencia múltiple directamente y, en su lugar, utiliza una función llamada mixin. Mixins en Ruby permite que los módulos accedan a métodos de instancia de otro utilizando el método de inclusión .
Mixins proporciona una forma controlada de agregar funcionalidad a las clases. El código en el mixin comienza a interactuar con el código en la clase. En Ruby, un código envuelto en un módulo se llama mixins que una clase puede incluir o extender. Una clase consta de muchos mixins.
A continuación se muestra el ejemplo de Ruby Mixins.
Ejemplo 1:
# Ruby program of mixins # module consist 2 methods module G def g1 end def g2 end end # module consist 2 methods module GFG def gfg1 end def gfg2 end end # Creating a class class GeeksforGeeks include G include GFG def s1 end end # Creating object gfg = GeeksforGeeks.new # Calling methods gfg.g1 gfg.g2 gfg.gfg1 gfg.gfg2 gfg.s1
Aquí, el módulo G consta de los métodos g1 y g2. El módulo GFG consta de los métodos gfg1 y gfg2. La clase GeeksforGeeks incluye los módulos G y GFG. La clase GeeksforGeeks puede acceder a los cuatro métodos, a saber, g1, g2, gfg1 y gfg2. Por lo tanto, podemos ver que la clase GeeksforGeeks hereda de ambos módulos. Por lo tanto, podemos decir que la clase GeeksforGeeks muestra mixin.
Considere el siguiente ejemplo para aclaración.
Ejemplo #2:
# Modules consist a method module Child_1 def a1 puts 'This is Child one.' end end module Child_2 def a2 puts 'This is Child two.' end end module Child_3 def a3 puts 'This is Child three.' end end # Creating class class Parent include Child_1 include Child_2 include Child_3 def display puts 'Three modules have included.' end end # Creating object object = Parent.new # Calling methods object.display object.a1 object.a2 object.a3
Producción
Three modules have included. This is Child one. This is Child two. This is Child three.
En el ejemplo anterior, el módulo Child_1 consiste en el método a1, de manera similar, el módulo Child_2 y Child_3 consisten en los métodos a2 y a3. La clase Parent incluye los módulos Child_1, Child_2 y Child_3. La clase Parent también incluye una visualización de métodos. Como podemos ver, la clase Parent hereda de los tres módulos. la clase Parent muestra herencia múltiple o mixin.
Publicación traducida automáticamente
Artículo escrito por Rohit_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA