Αναφορές - ένας οδηγός εκμάθησης#

Μια αναφορά στην Perl είναι ένα βαθμωτό που δείχνει σε μια άλλη τιμή: έναν πίνακα, ένα κατακερματισμό, μια υπορουτίνα, ένα άλλο βαθμωτό, ακόμα και μια άλλη αναφορά. Οι αναφορές είναι ο μοναδικός μηχανισμός που μετατρέπει τους τρεις τύπους κοντέινερ της Perl - βαθμωτά, πίνακες, κατακερματισμούς - σε αυθαίρετα εμφωλευμένες δομές δεδομένων.

Χωρίς αναφορές δεν μπορείτε να κατασκευάσετε κατακερματισμό πινάκων, πίνακα κατακερματισμών, δέντρο, γράφο, εγγραφή με μικτά πεδία, πίνακα callback, ή closure. Με αυτές, μπορείτε. Αυτός ο οδηγός σας οδηγεί από τους δύο τελεστές δημιουργίας αναφορών, μέσα από τη σύνταξη για την ανάκτηση της υποκείμενης τιμής, μέχρι τους ανώνυμους κατασκευαστές, τις αναφορές κώδικα, και το τέχνασμα ασθενών αναφορών που εμποδίζει τη διαρροή κυκλικών δομών.

Σε ποιους απευθύνεται#

Γράφετε ήδη λειτουργικό κώδικα Perl. Χρησιμοποιείτε πίνακες και κατακερματισμούς άνετα, αλλά τη στιγμή που το πρόβλημα απαιτεί έναν κατακερματισμό του οποίου οι τιμές είναι πίνακες - ή έναν πίνακα εγγραφών, ή ένα callback που μπορείτε να αποθηκεύσετε σε πίνακα - η σύνταξη παύει να είναι προφανής. Αυτό το κενό συμπληρώνουν οι αναφορές, και αυτό το κενό κλείνει αυτός ο οδηγός.

Πώς είναι οργανωμένος αυτός ο οδηγός εκμάθησης#

Κάθε κεφάλαιο εισάγει μία έννοια και στέκεται αυτόνομα. Διαβάστε τα με τη σειρά την πρώτη φορά· μεταπηδήστε στο σχετικό κεφάλαιο αργότερα.

  • Βασικά - ο τελεστής \, αποαναφορά βαθμωτού/πίνακα/κατακερματισμού με $$x, @$x, %$x, αποσαφήνιση με αγκύλες, και το βέλος -> για πρόσβαση σε στοιχεία.

  • Πίνακες πινάκων - δισδιάστατα δεδομένα, μοτίβα επανάληψης, ο κανόνας του βέλους-μεταξύ-δεικτών που κάνει το $m[i][j] να διαβάζεται ως πίνακας.

  • Κατακερματισμοί και μείξεις - κατακερματισμοί πινάκων, πίνακες κατακερματισμών, και το συνηθισμένο σχήμα πίνακα-εγγραφών.

  • Ανώνυμες αναφορές - [...] και {...} ως ενσωματωμένοι κατασκευαστές, πότε να τις προτιμάτε έναντι κατονομασμένων μεταβλητών.

  • Αναφορές υπορουτινών - \&name, ανώνυμα sub { ... }, κλήση με ->(...), και πώς οι closures αποτυπώνουν λεξιλογικές μεταβλητές.

  • Ασθενείς αναφορές - Scalar::Util::weaken και γιατί οι κυκλικές δομές τη χρειάζονται.