lambdas c with examples
Μάθετε τα πάντα για την έκφραση Lambda σε C ++ με απλούς όρους.
Η έκφραση Lambda είναι η νεότερη ιδέα στο C ++ που παρουσιάστηκε από το C ++ 11 και μετά.
Σε αυτό το σεμινάριο, θα μάθουμε για τα lambda στο C ++. Θα συζητήσουμε επίσης πώς μπορούν να οριστούν και να χρησιμοποιηθούν τα lambda στο πρόγραμμα.
=> Δείτε την ολοκληρωμένη σειρά προπόνησης C ++ εδώ.
Τι θα μάθετε:
- Λάμδα εκφράσεις / λειτουργίες
- Πώς να χρησιμοποιήσετε / γράψετε Lambdas;
- συμπέρασμα
- Συνιστώμενη ανάγνωση
Λάμδα εκφράσεις / λειτουργίες
Τα Lambdas, όπως συνήθως αποκαλούνται, είναι βασικά μικρά ενσωματωμένα αποσπάσματα κώδικα που μπορούν να χρησιμοποιηθούν σε συναρτήσεις ή ακόμη και δηλώσεις κλήσεων λειτουργίας. Δεν ονομάζονται ούτε επαναχρησιμοποιούνται.
Μπορούμε να δηλώσουμε τα lambdas ως «αυτόματα» και να τα χρησιμοποιήσουμε οπουδήποτε στο πρόγραμμα.
Πώς να χρησιμοποιήσετε / γράψετε Lambdas;
Η γενική σύνταξη του ορισμού του lambda έχει ως εξής:
(Capture clause) (parameter_list) mutable exception ->return_type { Method definition; }
Λήψη κλεισίματος : Εισαγωγέας Lambda σύμφωνα με τις προδιαγραφές C ++.
Λίστα παραμέτρων : Ονομάζεται επίσης ως δήλωση λάμδα. Είναι προαιρετικό και είναι παρόμοιο με τη λίστα παραμέτρων μιας μεθόδου.
Ευμετάβλητος : Προαιρετικός. Επιτρέπει την τροποποίηση των μεταβλητών που καταγράφονται από μια κλήση κατά αξία.
εξαίρεση : Προδιαγραφή εξαίρεσης. Προαιρετικός. Χρησιμοποιήστε το 'noexcept' για να υποδείξετε ότι το lambda δεν αποτελεί εξαίρεση.
φάση του κύκλου ζωής ανάπτυξης λογισμικού
Τύπος_επιστροφής : Προαιρετικός. Ο μεταγλωττιστής συνάγει από μόνο του τον τύπο επιστροφής της έκφρασης. Αλλά καθώς τα lambdas γίνονται πιο περίπλοκα, είναι καλύτερα να συμπεριλάβετε τον τύπο επιστροφής, καθώς ο μεταγλωττιστής ενδέχεται να μην είναι σε θέση να συνάγει τον τύπο επιστροφής.
Ορισμός μεθόδου : Σώμα λάμδα.
Μια ρήτρα σύλληψης του ορισμού λάμδα χρησιμοποιείται για να καθορίσει ποιες μεταβλητές καταγράφονται και αν καταγράφονται με αναφορά ή από την τιμή.
Ένα κενό κλείσιμο λήψης (), υποδεικνύει ότι δεν χρησιμοποιούνται μεταβλητές από το lambda που σημαίνει ότι μπορεί να έχει πρόσβαση μόνο σε μεταβλητές που είναι τοπικές.
Η λειτουργία 'capture-default' δείχνει τον τρόπο καταγραφής εκτός των μεταβλητών που αναφέρονται στο Lambda:
- Το κλείσιμο σύλληψης (&) σημαίνει ότι οι μεταβλητές καταγράφονται με αναφορά.
- Το κλείσιμο σύλληψης (=) υποδεικνύει ότι οι μεταβλητές καταγράφονται κατά τιμή.
Εάν έχουμε μια σύλληψη-προεπιλογή & μια σύλληψη ρήτρα, τότε δεν μπορούμε να έχουμε ένα αναγνωριστικό στη λήψη αυτής της συγκεκριμένης καταγραφής μπορεί να έχει το & αναγνωριστικό. Ομοίως, εάν η ρήτρα σύλληψης περιέχει capture-default =, τότε η ρήτρα σύλληψης δεν μπορεί να έχει τη μορφή = αναγνωριστικό. Επίσης, ένα αναγνωριστικό ή «αυτό» δεν μπορεί να εμφανιστεί περισσότερες από μία φορές στη ρήτρα σύλληψης.
Αυτό πρέπει να είναι σαφές από τα ακόλουθα Παραδείγματα.
(&sum, sum_var) //OK, explicitly specified capture by value (sum_var, &sum) //ok, explicitly specified capture by reference (&, &sum_var) // error, & is the default still sum_var preceded by & (i, i) //error, i is used more than once
Εδώ, το άθροισμα, το sum_var και εγώ είναι οι μεταβλητές που πρέπει να καταγραφούν και να χρησιμοποιηθούν στο λάμδα.
Δίνεται παρακάτω είναι ένα βασικό παράδειγμα έκφρασης Lambda στο C ++.
#include #include using namespace std; int main() { auto sum = ()(int a, int b) { return a + b; }; cout <<'Sum of two integers:'<< sum(5, 6) << endl; return 0; }
Παραγωγή:
Άθροισμα δύο ακεραίων: 11
Εδώ έχουμε ενσωματωμένη έκφραση λάμδα για να υπολογίσουμε το άθροισμα των δύο τιμών. Έχουμε καθορίσει τον τύπο των τιμών a και b ως ακέραιοι.
Ένα πρόβλημα με τον παραπάνω κώδικα είναι ότι λειτουργεί μόνο για ακέραιους αριθμούς. Εάν αργότερα στο πρόγραμμα, θέλουμε να προσθέσουμε δύο διπλά ή χορδές ή οποιουσδήποτε άλλους τύπους, θα πρέπει να έχουμε αυτά τα πολλά λάμδα. Αυτός δεν είναι ένας αποτελεσματικός τρόπος προγραμματισμού.
Μπορούμε να ξεπεράσουμε αυτό το πρόβλημα χρησιμοποιώντας παραμέτρους προτύπου. Αυτό καθιστά το lambdas γενικευμένο για όλους τους τύπους δεδομένων. Αυτό γίνεται από το C ++ 14 και μετά.
Έτσι, το παραπάνω πρόγραμμα θα τροποποιηθεί ως εξής:
#include #include using namespace std; int main() { // generalized lambda auto sum = ()(auto a, auto b) { return a + b; }; cout <<'Sum(5,6) = '<< sum(5, 6) << endl; // sum of two integers cout <<'Sum(2.0,6.5) = '< Παραγωγή:
Άθροισμα (5,6) = 11
Άθροισμα (2.0,6.5) = 8.5
Άθροισμα ((συμβολοσειρά ('SoftwareTesting'), string ('help.com')) = SoftwareTestinghelp.com
πώς να ανοίξετε ένα αρχείο xml στη λέξη
Έτσι, σε αυτό το πρόγραμμα, χρησιμοποιήσαμε ένα γενικό άθροισμα λάμδα, το οποίο μπορεί να χρησιμοποιηθεί για να βρούμε το άθροισμα των δύο αντικειμένων οποιουδήποτε τύπου. Λάβετε υπόψη ότι χρησιμοποιήσαμε τη λέξη-κλειδί «αυτόματη» για να υποδείξουμε ότι ο τύπος δεδομένων της παραμέτρου θα συναχθεί βάσει των δεδομένων.
Για να δείξουμε τη χρήση αυτού του λάμδα, το έχουμε χρησιμοποιήσει με τρεις διαφορετικούς τύπους δεδομένων, int, float και string. Από την έξοδο, γνωρίζουμε ότι σύμφωνα με τον τύπο των δεδομένων, πραγματοποιείται λειτουργία αθροίσματος. Για παράδειγμα, όταν παρέχουμε παραμέτρους συμβολοσειράς στο άθροισμα λάμδα, συνδυάζει τις δύο χορδές.
συμπέρασμα
Έχουμε φτάσει στο τέλος αυτού του σεμιναρίου σχετικά με τις εκφράσεις λάμδα στο C ++. Αυτή είναι η νεότερη ιδέα στο C ++ και μπορεί να είναι πολύ χρήσιμη όταν πρέπει να εκτελέσουμε ένα μικρό απόσπασμα κώδικα inline. Το Lambdas μπορεί επίσης να γίνει γενικό και να χρησιμοποιηθεί για όλους τους τύπους δεδομένων.
Στο επερχόμενο σεμινάριό μας, θα συζητήσουμε μερικά από τα επιπλέον θέματα στο C ++ όπως ο χρόνος, η τυπική είσοδος / έξοδος και η καταγραφή.
=> Διαβάστε τη δημοφιλή σειρά εκπαιδευτικών C ++ εδώ.
Συνιστώμενη ανάγνωση
- Τι είναι ο έλεγχος σύγκρισης (Μάθετε με παραδείγματα)
- Εκμάθηση Python DateTime με παραδείγματα
- Αποκοπή εντολής στο Unix με παραδείγματα
- Unix Cat Command Syntax, Επιλογές με παραδείγματα
- Χρήση δρομέα στο MongoDB με παραδείγματα
- Ls Command στο Unix με παραδείγματα
- Λειτουργίες ημερομηνίας και ώρας σε C ++ με παραδείγματα
- MongoDB Sort () Μέθοδος με παραδείγματα