Métodos y la Sintáxis Flecha

Para escribir un método para una clase (package) dada, basta con escribir la correspondiente subrutina dentro del paquete.

Así el método get_author queda descrito mediante la subrutina:

sub get_author { $_[0]->{_author} }
Sin embargo, llamar a Biblio::Doc::get_author como método conlleva una extensión a la sintáxis flecha de Perl. Si se tiene que $obj es una referencia a un objeto de la clase Biblio::Doc, podemos acceder a cualquier método del paquete usando la notación $obj->method donde method es cualquier método de la clase. Por ejemplo:
$obj->get_author()
Es equivalente a
Biblio::Doc::get_author($obj);
Esto es: cuando una subrutina es llamada como método, la lista de argumentos que recibe comienza con la referencia al objeto a través del cual fué llamada y va seguida de los argumentos que fueron explicitados en la llamada al método.

Observe que la última llamada trata a get_author como una subrutina ordinaria, mientras que la primera la usa ''como método''.

La sintáxis ''flecha'' para la llamada a un método es consistente con el uso de la flecha para otros tipos de referencias en Perl. Así, al igual que escribimos $hsh_ref->{clave} o bien $sub_ref->(4,7,8) también escribimos $obj_ref->metodo(@args). Una diferencia de esta última notación con las anteriores estriba en que el referente tiene diferentes conductas, esto es, tiene varios metodos y la conducta concreta que queremos producir se especifica escribiendo el nombre del método después de la flecha.

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