Búsqueda de un Método

La herencia en Perl determina el recorrido de búsqueda de un método. Si el objeto no se puede encontrar en la clase, recursivamente y en orden primero-profundo se busca en las clases de las cuales esta hereda, esto es en las clases especificadas en el vector @ISA. Para ser mas precisos, cuando Perl busca por una llamada a un método como $obj->method(), realiza la siguiente secuencia de búsqueda:

  1. Si la clase en la cuál el objeto fué bendecido (digamos MyClass) tiene una subrutina method se llama
  2. Si no, si existe un vector @ISA, para cada una de las clases en el vector @ISA se repiten los pasos 1 y 2
  3. Si no, si la clase UNIVERSAL (véase la sección 6.6) tiene un método con ese nombre, se le llama
  4. Si no, si la clase actual MyClass tiene un método AUTOLOAD se le llama
  5. Si no, si una de las clases antepasadas de esta (una vez mas búscadas en orden primero profundo) contiene un método AUTOLOAD, se le llama
  6. Si no, si la clase UNIVERSAL tiene un método AUTOLOAD, se le llama
  7. Si no, se abandona la búsqueda con un mensaje de error

Esta búsqueda sólo se hace una vez por método. Una vez localizado el método se utiliza una ''cache'' para acceder al método rápidamente. Si el vector @ISA o el vector @ISA de cualquiera de los antepasados de la clase es modificado, se limpia la ''cache''.

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19