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 .