Modulos parte III

by Gastón Ramos

Nuevamente amigos seguimos con el tema de los módulos en ruby, para continuar comenzaremos con un ejmeplo del uso de “super” entre módulos y clases:

module A
  def imprimir
    puts "Imprimo desde el --modulo-- A"
  end
end

class B
  include A
  def imprimir
    puts "Imprimo desde la --clase-- B"
    puts "Trigger para ejecutar el inmediato mas alto 'imprimir'"
    super
    puts "Vuelvo de la llamada a super."
  end
end
b = B.new
b.imprimir

salida:

=> Imprimo desde la --clase-- B
=> Trigger para ejecutar el inmediato mas alto 'imprimir'
=> Imprimo desde el --modulo-- A
=> Vuelvo de la llamada a super.

La instancia de B (b) recibe el mensaje “imprimir”, como vimos anteriormente comienza mirando la propia clase y encuentra el método “imprimir” , por otro lado dentro del método hay una llamada a super, esto significa que cuando encuentre un método “imprimir” debe continuar buscando hacia arriba al siguiente, la siguiente “ocurrencia” en este caso es la del módulo “A”. Hasta acá todo genial, pero que pasa si el método en cuestión tiene argumentos?
super maneja los argumentos de la siguiente forma:

  • Invocado sólo, super automáticamente redirige los argumentos pasado al método desde dónde se invocó.
  • Invocado con una lista vacía de argumentos –super()– no envía ningún argumento al método de arriba
  • Invocado con una lista de argumentos –super(a,b,c)– este envía exactamente estos argumentos

Cómo siempre cortito y simple, nos vemos en el próximo capítulo :)