Λογική Boole για προγραμματιστές της Perl — οδηγός εκμάθησης#
Σχεδόν κάθε γραμμή λειτουργικής Perl διαμορφώνεται από τη λογική Boole. Τα open ... or die, $h{$k} //= [], unless ($a == $b && $c eq $d), /^(yes|no)$/, $flags & 0x4 — είναι όλα η ίδια χούφτα πράξεων εφαρμοσμένη σε διαφορετικά πεδία. Αυτός ο οδηγός εκμάθησης διατρέχει αυτές τις πράξεις από τη βάση προς τα πάνω: τι σημαίνει αλήθεια στην Perl, τι επιστρέφουν στην πραγματικότητα οι τελεστές, και τις δεκαέξι δυαδικές συναρτήσεις αληθείας και πώς γράφεται η καθεμία στην Perl, τους δύο νόμους που μετατρέπουν περίπλοκες συνθήκες σε απλές, και τα τρία σημεία όπου εμφανίζεται περισσότερο η λογική: αριθμητική κατά bit, κανονικές εκφράσεις και ροή ελέγχου.
Σε ποιον απευθύνεται#
Γράφετε ήδη λειτουργική Perl. Χρησιμοποιείτε τα &&, ||, if, unless χωρίς να το σκέφτεστε — όταν όμως μια συνθήκη μεγαλώσει πέρα από τρεις ή τέσσερις προτάσεις, παύετε να την εμπιστεύεστε και καταφεύγετε σε παρενθέσεις για τις οποίες υποπτεύεστε ότι δεν χρειάζονται. Αυτός ο οδηγός εκμάθησης κλείνει αυτό το κενό. Αφού τον διαβάσετε, θα γνωρίζετε με ακρίβεια ποια λογική πράξη εκτελεί μια δεδομένη έκφραση, γιατί δύο φαινομενικά διαφορετικές μορφές είναι η ίδια έκφραση, και πώς να ανάγετε ένα μπερδεμένο unless σε ένα καθαρό if με σιγουριά αντί με δοκιμή και σφάλμα.
Πεδίο#
Κλασική δίτιμη λογική Boole — αληθές και ψευδές, τίποτε άλλο. Το undef της Perl εισάγει μια τρίτη τιμή (το άγνωστο) και μια ολόκληρη οικογένεια τρίτιμων ιδιωμάτων (defined, //, //=). Αυτά αναφέρονται όπου τέμνονται με τη δίτιμη λογική, αλλά μια κατάλληλη πραγμάτευση της τρίτιμης λογικής θα διπλασίαζε το μέγεθος αυτού του οδηγού εκμάθησης χωρίς να τον ολοκληρώνει· αυτός είναι ξεχωριστός οδηγός.
Πώς είναι οργανωμένος αυτός ο οδηγός εκμάθησης#
Κάθε κεφάλαιο είναι μία έννοια. Διαβάστε τα με τη σειρά στο πρώτο πέρασμα· μεταβείτε στο σχετικό κεφάλαιο αργότερα όταν αναζητάτε ένα γεγονός.
Τι θα μπορείτε να κάνετε μετά την ανάγνωση#
Να κοιτάξετε οποιαδήποτε λογική έκφραση σε πηγαίο κώδικα Perl και να ονομάσετε τη συνάρτηση αληθείας που υπολογίζει.
Να μετατρέπετε μεταξύ των τεσσάρων ισοδύναμων μορφών μιας συνεπαγωγής (
a → b,!a || b,!(a && !b), της αντιθετοαντιστροφής) χωρίς να χρειάζεται να σκεφτείτε.Να ανάγετε ένα
unlessμε δύο αρνημένες υποπροτάσεις σε ένα επίπεδοifσε ένα μηχανικό βήμα.Να αναγνωρίζετε πότε μια εναλλαγή regex είναι ένα λογικό OR πάνω σε σύνολα και πότε ένα ζεύγος διεκδικήσεων είναι ένα λογικό AND, και να χρησιμοποιείτε αυτό το πλαίσιο για να διαβάζετε σύνθετες κανονικές εκφράσεις.
Να χρησιμοποιείτε τους τελεστές κατά bit για να θέτετε, να καθαρίζετε, να εναλλάσσετε και να ελέγχετε επιμέρους σημαίες χωρίς να συμβουλεύεστε αναφορά.
Να επιλέγετε το σωστό ιδίωμα βραχυκυκλώματος (
||,//,||=,//=,or die) για την περίσταση, γνωρίζοντας γιατί λειτουργεί το καθένα.