strawberry logo lane historia example compilador perl

logo - perl vs python



¿Qué hace la flecha-> en Perl? (4)

En general, -> insinúa una desreferencia. Esta sintaxis viene de C.

En su ejemplo, significa llamada a un método: llamar a los links del método desde la instancia del objeto en $m . Esto se explica en el capítulo Objects in Modern Perl . Las piezas de perlsub , perlfaq7 , perlobj , perltoot proporcionan los detalles.

Para referencias en general, busque Stack Overflow ; es un tema recurrente.

Sigo viendo -> en el código y no estoy exactamente seguro de lo que significa. Por ejemplo:

@top_links = @{$m->links};

¿Qué hace esta línea? Además, ¿dónde puedo leer sobre esto?


La parte externa @{} es una desreferencia - esto implica $m->links es una referencia a una matriz, por lo que este operador la deduce para referirse a la matriz directamente, que luego se copia en @top_links

El Capítulo 8 del '' Camel Book '' es un buen lugar para aprender sobre referencias o la sección perlref de la documentación de Perl.

El operador de flecha -> es una desreferencia de objeto, en este caso buscando el miembro de links del objeto $m . De manera similar, los capítulos posteriores del Libro Camel cubren el soporte orientado a objetos de Perl en detalle. Consulte la sección perlobj de la documentación de Perl también.


Perl arrow operator tiene otro uso:

El método Clase-> invoca el método de subrutina en el paquete Clase

aunque es completamente diferente a la muestra de tu código. Solo incluyéndolo para completar la pregunta en el título.


Ver The Arrow Operator en perlop:

" -> " es un operador de desreferencia infijo, tal como lo es en C y C ++. Si el lado derecho es un [...] , {...} o un (...) subíndice, entonces el lado izquierdo debe ser una referencia rígida o simbólica a una matriz, un hash o una subrutina respectivamente. (O técnicamente hablando, una ubicación capaz de contener una referencia difícil, si se trata de una matriz o una referencia hash que se utiliza para la asignación). Consulte perlreftut y perlref .

De lo contrario, el lado derecho es un nombre de método o una variable escalar simple que contiene el nombre del método o una referencia de subrutina, y el lado izquierdo debe ser un objeto (una referencia bendecida) o un nombre de clase (es decir, un nombre de paquete) . Ver perlobj .