2012-04-29 8 views

Respuesta

10

Si bien no está en Ruby Doc por alguna razón, included en realidad está documentado. Correr ri Module.included en el terminal proporciona la siguiente:

included(othermod) 

devolución de llamada invoca cada vez que el receptor está incluido en otro módulo o clase. Esto se debe usar con preferencia a Module.append_features si su código desea realizar alguna acción cuando se incluye un módulo en otro.

module A 
    def A.included(mod) 
    puts "#{self} included in #{mod}" 
    end 
end 
module Enumerable 
    include A 
end 

Esta documentación se puede encontrar en el Ruby source in object.c. Tristemente, Module.extended no está documentado.

+4

'Module.extended' es exactamente como' included', excepto que se ejecuta cuando se invoca 'extender algunos_modulos' en lugar de llamar' include some_module'. –

1

Sospecho que no está en el sitio web de RubyDoc porque es un método privado, y los métodos privados no se muestran actualmente.

Las personas son conscientes de este problema, pero aún no han resuelto cómo manejar los métodos que son privados aunque no sean detalles de implementación.

He creado un informe de errores en http://bugs.ruby-lang.org/issues/6381

+0

Aunque es interesante que sea visible a través de 'ri'. ¡Buena captura de métodos privados que no están en Ruby Doc! Definitivamente desafortunado, se bueno si fueron "doblados" por defecto, pero aún se pueden ver. –

0

parece únicos métodos públicos se documentan

0

Ambos están documentados en la página 556 de la segunda edición del pico (que abarca Rubí 1.8). La documentación allí se ve como el resultado de ri Module.included que Andrew Marshall publicó, por lo que sospecho que esa sección del libro se generó automáticamente. Si se ha eliminado de las ediciones posteriores de pico, podría ser el resultado del mismo error que impide que se muestre en ruby-doc.org.

Cuestiones relacionadas