1 00:00:00,000 --> 00:00:03,332 >> [Παίζει μουσική] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Ο καθένας, καλώς ήλθατε στο σεμινάριο CS50, 4 00:00:09,590 --> 00:00:11,690 iOS App Ανάπτυξης με Swift. 5 00:00:11,690 --> 00:00:15,690 Είμαι Νταν Armendariz, και είμαι διδάσκαλος της επιστήμης των υπολογιστών εδώ στο Χάρβαρντ. 6 00:00:15,690 --> 00:00:21,510 >> Και την επόμενη ώρα θα είναι ένας ανεμοστρόβιλος περιοδεία του ως πολλά πράγματα 7 00:00:21,510 --> 00:00:25,160 σχετικά με αυτό το θέμα, όπως μπορούμε να χωρέσουν. 8 00:00:25,160 --> 00:00:29,170 Θα τοποθετήσω όλα του πηγαίου κώδικα ότι θα δούμε σήμερα στο διαδίκτυο. 9 00:00:29,170 --> 00:00:31,990 Εμείς μπορεί να μην είναι σε θέση να πραγματικά να πάμε πάνω από όλα 10 00:00:31,990 --> 00:00:34,810 ότι είμαι ότι είμαι δείχνοντάς σας σε αυτή την ώρα. 11 00:00:34,810 --> 00:00:37,580 Αλλά τουλάχιστον ελπίζουμε ότι μέσα από τα σχόλια του πηγαίου κώδικα, 12 00:00:37,580 --> 00:00:40,830 θα είστε σε θέση να προσπαθήσουμε να καταλάβουμε τι ακριβώς συμβαίνει για αυτά τα πράγματα 13 00:00:40,830 --> 00:00:42,950 ότι δεν είναι αρκετά για να πάρει. 14 00:00:42,950 --> 00:00:46,970 >> Συνολικά, η δομή του η σημερινή συζήτηση θα είναι ως εξής. 15 00:00:46,970 --> 00:00:52,820 Θα ξεκινήσουμε να κάνει κάποιες βασικές σύνταξη με τη γλώσσα Swift, 16 00:00:52,820 --> 00:00:56,290 υπεισέλθω σε μερικά από τα πιο προηγμένα συντακτικό της γλώσσας Swift. 17 00:00:56,290 --> 00:00:59,560 Επειδή η γλώσσα είναι πραγματικά μοντέρνα και 18 00:00:59,560 --> 00:01:02,110 έχει πολύ υψηλό επίπεδο χαρακτηριστικά, τα πράγματα που δεν έχουμε 19 00:01:02,110 --> 00:01:06,600 δει σε C σε όλη CS50, ή ακόμη και ορισμένοι οι άλλες γλώσσες 20 00:01:06,600 --> 00:01:09,310 ότι έχουμε αρχίσει χρήση σε CS50 όπως PHP, 21 00:01:09,310 --> 00:01:12,670 έτσι είμαι πρόκειται να πρέπει να προσπαθήσουν να εισάγουν επίσης κάποια θέματα τα οποία 22 00:01:12,670 --> 00:01:18,580 σχετίζονται με υψηλότερο επίπεδο γλώσσες ότι δεν μπορείτε να δείτε σε βάθος στο CS50, 23 00:01:18,580 --> 00:01:21,380 αλλά θα δείτε στη συνέχεια μαθήματα επιστήμης των υπολογιστών. 24 00:01:21,380 --> 00:01:25,290 Γι 'αυτό πρόκειται να είναι μια πυκνά ώρα. 25 00:01:25,290 --> 00:01:28,897 Και παρακαλώ αισθανθείτε ελεύθερος να με αφήσει ξέρω εάν έχετε οποιεσδήποτε ερωτήσεις. 26 00:01:28,897 --> 00:01:30,730 Έτσι, αν σας ενδιαφέρει με τον τρόπο ανάπτυξης 27 00:01:30,730 --> 00:01:34,442 με Swift, ή πραγματικά οποιαδήποτε ανάπτυξη app iOS, 28 00:01:34,442 --> 00:01:35,900 υπάρχουν μερικές απαιτήσεις. 29 00:01:35,900 --> 00:01:39,940 Πρώτα απ 'όλα, θα πρέπει να χρησιμοποιείτε ένα Mac, που τρέχει στα παραδείγματα 30 00:01:39,940 --> 00:01:43,880 ότι θα πρέπει να χρησιμοποιείτε σήμερα, μια σχετικά νέα έκδοση του λειτουργικού συστήματος 31 00:01:43,880 --> 00:01:46,580 X. Στην περίπτωση αυτή, τρέχω X 10.5. 32 00:01:46,580 --> 00:01:48,600 Μπορείτε να εκτελείτε 10.11, αν θέλετε. 33 00:01:48,600 --> 00:01:52,430 Αλλά ό, τι πρόκειται να δείτε εμπλέκει Xcode 7 και αργότερα, 34 00:01:52,430 --> 00:01:56,271 το οποίο διαθέτει την τελευταία έκδοση του Swift, η οποία είναι Swift 2.0. 35 00:01:56,271 --> 00:01:58,270 Αυτό είναι πραγματικά ένα πολύ σημαντική διάκριση. 36 00:01:58,270 --> 00:02:01,510 Ένα μεγάλο μέρος της σύνταξης έχει άλλαξε αρκετά σημαντικά 37 00:02:01,510 --> 00:02:05,890 σε ορισμένες περιπτώσεις, από το Swift 1.0, το οποίο κυκλοφόρησε τον περασμένο χρόνο, 38 00:02:05,890 --> 00:02:08,514 σε Swift 2.0, η οποία μόλις βγήκε αυτό το φθινόπωρο. 39 00:02:08,514 --> 00:02:09,889 Έτσι θα πάμε να δείξουμε Swift 2.0. 40 00:02:09,889 --> 00:02:13,020 Πολλά από τα πράγματα που ψάχνετε για online 41 00:02:13,020 --> 00:02:18,040 όταν προσπαθείτε να πάρετε επιπλέον πληροφορίες σχετικά με μια ποικιλία από πράγματα, 42 00:02:18,040 --> 00:02:20,710 μπορεί να θέλετε να ρητά αναζήτηση για Swift 2 43 00:02:20,710 --> 00:02:24,950 και όχι απλά παλιά Swift να κάνει βεβαιωθείτε ότι μπορείτε να πάρετε το σωστό σύνταξη. 44 00:02:24,950 --> 00:02:26,920 >> Στην πραγματικότητα, αυτό είναι γενικά αλήθεια. 45 00:02:26,920 --> 00:02:31,210 Υπάρχει μια ταχεία ποσό της αναπτυξιακής συμβαίνει στο Swift γλώσσα 46 00:02:31,210 --> 00:02:35,110 από τότε που η Apple κυκλοφόρησε, νομίζω τι, αυτό είναι λίγο περισσότερο από ένα χρόνο 47 00:02:35,110 --> 00:02:36,370 τώρα. 48 00:02:36,370 --> 00:02:39,080 Και τα πράγματα έχουν αλλάξει δραματικά σε αυτό το διάστημα. 49 00:02:39,080 --> 00:02:42,160 Και έτσι δεν πρέπει να απογοητεύονται εάν, όταν ψάχνετε γύρω από 50 00:02:42,160 --> 00:02:48,310 για θέματα σχετικά με Swift ή πώς να ολοκληρώσει κάτι χρησιμοποιώντας κάποια παράδειγμα κώδικα 51 00:02:48,310 --> 00:02:51,210 ή κάτι που δεν το κάνει πράγματι εργάζονται για Swift 2.0. 52 00:02:51,210 --> 00:02:53,790 Βεβαιωθείτε ότι ψάχνετε ειδικά για αυτήν την έκδοση 53 00:02:53,790 --> 00:02:58,690 να προσπαθήσει να ελαχιστοποιηθούν οι επιπτώσεις των διαφόρων εκδόσεις και αυτά τα είδη των πραγμάτων. 54 00:02:58,690 --> 00:03:02,470 >> Θα προσπαθήσω να επισημάνω μόνο μερικά πράγματα που είναι διαφορετικά σε παλαιότερες εκδόσεις. 55 00:03:02,470 --> 00:03:03,970 Αλλά είναι κάτι που πρέπει να προσέξετε. 56 00:03:03,970 --> 00:03:06,770 Αυτό πιθανότατα θα είναι μία από τις μεγαλύτερες πονοκεφάλους 57 00:03:06,770 --> 00:03:11,010 ότι θα έχετε με το Swift είναι η εύρεση παράδειγμα κώδικα που είναι μεγαλύτερης ηλικίας, ακόμα και απλά 58 00:03:11,010 --> 00:03:14,050 από λίγους μήνες, προσπαθεί να χρησιμοποιήσει το πιο σύγχρονο έργο σας. 59 00:03:14,050 --> 00:03:15,430 Και απλά δεν λειτουργεί. 60 00:03:15,430 --> 00:03:18,530 Παίρνετε σφάλματα μεταγλώττισης, σύνταξη λάθη, όλα τα είδη των τρελά πράγματα. 61 00:03:18,530 --> 00:03:21,580 Έτσι απλά να είστε υπομονετικοί με ότι, και ελπίζουμε ότι θα 62 00:03:21,580 --> 00:03:24,200 έχουν μια πολύ ωραία εμπειρία με συνολική Swift. 63 00:03:24,200 --> 00:03:28,430 >> Τώρα μπορείτε πραγματικά join-- και ελπίζω έχουμε στην πραγματικότητα εξακολουθούμε να έχουμε αυτό το αυτό το year-- 64 00:03:28,430 --> 00:03:30,910 Apple App CS 50 ομάδα ανάπτυξης, η οποία 65 00:03:30,910 --> 00:03:34,680 θα σας επιτρέψει να εγκαταστήσετε εφαρμογές το οποίο μπορείτε να δημιουργήσετε για iOS συσκευές σας. 66 00:03:34,680 --> 00:03:39,190 Έτσι, ρίξτε μια ματιά σε αυτό το URL, εάν Σας ενδιαφέρει να το κάνουμε αυτό. 67 00:03:39,190 --> 00:03:41,450 >> Έτσι, μόλις δύο πράγματα για τον εαυτό του Swift. 68 00:03:41,450 --> 00:03:43,580 Είναι ένα καταρτίζονται γλώσσα. 69 00:03:43,580 --> 00:03:45,870 Αλλά θα δείτε ότι μερικά από τα χαρακτηριστικά που χρησιμοποιούμε 70 00:03:45,870 --> 00:03:50,650 επιτρέπουν να χρησιμοποιείται επίσης σε ένα κομμάτι σαν ένας τρόπος ερμηνείας, καθώς και. 71 00:03:50,650 --> 00:03:56,350 >> Ένα μεγάλο μέρος της σύνταξης είναι δανεισμένος από C. Είναι βασισμένο και γραμμένο σε C. 72 00:03:56,350 --> 00:04:00,400 Και έτσι θα δούμε ότι Υπάρχουν πολλά φαστ φουντ 73 00:04:00,400 --> 00:04:04,450 από τις υπάρχουσες γνώσεις σας από C που μπορούμε να λιμάνι Swift. 74 00:04:04,450 --> 00:04:07,290 >> Αλλά υπάρχουν πράγματα που καθιστούν πολύ διαφορετική από C. 75 00:04:07,290 --> 00:04:08,860 Είναι πολύ έντονα δακτυλογραφημένη. 76 00:04:08,860 --> 00:04:10,380 Δεν υπάρχει αυτόματη διαχείριση μνήμης. 77 00:04:10,380 --> 00:04:13,170 Δεν πρόκειται να πρέπει να χρησιμοποιείτε malloc ή δωρεάν σε οποιοδήποτε σημείο. 78 00:04:13,170 --> 00:04:15,110 Είναι σχεδιασμένο για γενικότητα. 79 00:04:15,110 --> 00:04:19,480 Έτσι με άλλα λόγια, μπορείτε να το χρησιμοποιήσετε σε όλα τα είδη των πλαισίων, από την Apple ρολόι 80 00:04:19,480 --> 00:04:26,290 για το iPhone σε όλη τη διαδρομή μέχρι το OS X, και ακόμη και ορισμένοι διακομιστές, ακόμη και κάποια scripting. 81 00:04:26,290 --> 00:04:28,400 Αλλά θα δούμε ότι το υποστήριξη για scripting 82 00:04:28,400 --> 00:04:31,360 δεν είναι αρκετά εκεί ακόμα ως είναι σε άλλες γλώσσες. 83 00:04:31,360 --> 00:04:34,930 Έτσι, πιθανότατα θα χρησιμοποιείτε αυτό αποκλειστικά για την ανάπτυξη 84 00:04:34,930 --> 00:04:37,060 στο Mac σας ή το iPhone σας. 85 00:04:37,060 --> 00:04:40,150 >> Και έχει πολλά σύγχρονα χαρακτηριστικά. 86 00:04:40,150 --> 00:04:43,380 Και πολλά από αυτά τα πράγματα είναι πράγματα που θα πάμε για να προσπαθήσουμε να αντιμετωπίσουμε σήμερα, 87 00:04:43,380 --> 00:04:47,590 αλλά και θέματα που μας ότι ειλικρινά, μπορούμε να αφιερώσουμε ολόκληρο μαθήματα. 88 00:04:47,590 --> 00:04:50,140 Στην πραγματικότητα, CS 51, η οποία είναι προσφέρεται επόμενο εξάμηνο, 89 00:04:50,140 --> 00:04:53,990 εστιάζει πολύ για τα θέματα αυτά που περιγράφονται παρακάτω. 90 00:04:53,990 --> 00:04:56,781 Έτσι, μπορείτε να περάσετε ένα ολόκληρο εξάμηνο κατανόηση αυτών των πραγμάτων. 91 00:04:56,781 --> 00:04:58,530 Αλλά θα πάμε να προσπαθήσουμε για να πάρει μέσα από αυτά 92 00:04:58,530 --> 00:05:00,800 τουλάχιστον αρκετό ώστε να μπορεί να καταλάβει τι είναι 93 00:05:00,800 --> 00:05:03,700 συμβαίνει όταν κοιτάς σε Swift πρόγραμμα 94 00:05:03,700 --> 00:05:07,310 και να είναι σε θέση να χαράξει το δρόμο σας μέσα από αυτό για το τελικό σχέδιο. 95 00:05:07,310 --> 00:05:10,780 >> Τώρα, ένας από τους καλύτερους τρόπους που μπορείτε να πάρετε περισσότερες πληροφορίες σχετικά με αυτό 96 00:05:10,780 --> 00:05:14,700 Είναι ειλικρινά μόνο μέσω της Apple υπό την προϋπόθεση τεκμηρίωση για Swift. 97 00:05:14,700 --> 00:05:16,930 Υπάρχουν πολλά APIs που είναι διαθέσιμες. 98 00:05:16,930 --> 00:05:21,170 Και αυτό είναι μια καλή βάση για το σπίτι σας να αναζητήσουν, συγκεκριμένα πράγματα που μπορείτε 99 00:05:21,170 --> 00:05:23,020 θέλετε να κάνετε με ένα API που αφορούν iOS. 100 00:05:23,020 --> 00:05:26,350 Αν θέλετε να χρησιμοποιήσετε την κάμερα για παράδειγμα, μπορείτε να αρχίσετε να ψάχνετε εδώ, 101 00:05:26,350 --> 00:05:32,540 και επίσης να χρησιμοποιούν το Google και στοίβα Υπερχείλιση, όπως θα κάνατε κανονικά. 102 00:05:32,540 --> 00:05:36,670 >> Οποιεσδήποτε ερωτήσεις σχετικά με αυτό το πριν ξεκινήσετε αμέσως; 103 00:05:36,670 --> 00:05:37,880 Εντάξει. 104 00:05:37,880 --> 00:05:38,700 Ας προχωρήσουμε. 105 00:05:38,700 --> 00:05:42,620 >> Έτσι, η πρώτη, έχω ένα αριθμός του παραδείγματος αρχείων. 106 00:05:42,620 --> 00:05:46,040 Και Πάω να προσπαθήσω να εντείνει μέσα από αυτά σχετικά γρήγορα. 107 00:05:46,040 --> 00:05:49,190 Αυτό είναι το Hello World αρχείο για Swift. 108 00:05:49,190 --> 00:05:51,050 Είναι πολύ απλό. 109 00:05:51,050 --> 00:05:54,360 Υπάρχει τρόπος περισσότερα σχόλια από τον υπάρχοντα κώδικα. 110 00:05:54,360 --> 00:05:57,100 Παρατηρήστε την πραγματική κώδικας είναι σε το κάτω μέρος της γραμμής 14. 111 00:05:57,100 --> 00:05:57,980 Λέει εκτύπωσης. 112 00:05:57,980 --> 00:05:59,820 Και τότε είναι μια κλήση συνάρτησης. 113 00:05:59,820 --> 00:06:03,010 Είμαστε περνώντας σε αυτό μια σειρά που ονομάζεται Γεια CS50. 114 00:06:03,010 --> 00:06:04,750 Σημειώστε ότι δεν υπάρχει καμία ερωτηματικά. 115 00:06:04,750 --> 00:06:07,010 Σημειώστε ότι δεν υπάρχει int main. 116 00:06:07,010 --> 00:06:10,392 Υπάρχει κανένα από τα cruft που είχαμε με C. 117 00:06:10,392 --> 00:06:15,020 Όταν χρησιμοποιούμε Swift με τον τρόπο αυτό, το οποίο είναι ακριβώς γραμμένο σε ένα αρχείο κειμένου 118 00:06:15,020 --> 00:06:18,340 και αποθηκεύονται στον υπολογιστή μου, στη συνέχεια, Μπορώ να το υπολογίσουν και να το εκτελέσετε. 119 00:06:18,340 --> 00:06:20,920 >> Παρατηρήστε ότι εδώ είμαι δεν χρησιμοποιούν το IDE CS50. 120 00:06:20,920 --> 00:06:24,460 Αυτό προϋποθέτει ότι είμαι εκτελείται και ότι είμαι σε OS X, 121 00:06:24,460 --> 00:06:27,870 και ότι έχω ήδη εγκαταστήσει το Xcode σε αυτό το μηχάνημα, προκειμένου αυτό 122 00:06:27,870 --> 00:06:29,080 να λειτουργήσει πραγματικά. 123 00:06:29,080 --> 00:06:33,349 Αλλά αυτό είναι μόνο ένα κανονικό αρχείο κειμένου ότι μπορούμε στη συνέχεια να καταρτίσει και να επεξεργαστείτε. 124 00:06:33,349 --> 00:06:34,890 Ας δούμε πώς αυτό λειτουργεί πραγματικά. 125 00:06:34,890 --> 00:06:37,430 Τι γίνεται αν θέλω να το υπολογίσουν; 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 Μετά από μια στιγμή ή δύο, το θα δούμε ότι έχουμε τώρα 128 00:06:42,960 --> 00:06:45,360 καταρτίζονται αυτό σε ένα αρχείο που ονομάζεται 1. 129 00:06:45,360 --> 00:06:51,090 Και τώρα έχουμε τυπωμένο CS50 μας, εφαρμογή μας Hello World όχι. 130 00:06:51,090 --> 00:06:54,690 >> Ανακοίνωση ένα άλλο πράγμα που καλά είναι ότι από προεπιλογή, 131 00:06:54,690 --> 00:07:00,090 δεν είχαμε στην είσοδο A / N για να εκτυπώσετε μια νέα γραμμή. 132 00:07:00,090 --> 00:07:05,315 Από προεπιλογή, η λειτουργία εκτύπωσης σε Swift θα εκτυπώσει μια νέα γραμμή για σας. 133 00:07:05,315 --> 00:07:09,284 Μπορείτε να περάσετε μια προαιρετική πρόσθετη παράμετρος για να το πω να μην το πράξουν. 134 00:07:09,284 --> 00:07:10,950 Όμως, το Google για περισσότερες πληροφορίες σχετικά με αυτό. 135 00:07:10,950 --> 00:07:13,450 Από προεπιλογή, αυτό θα κάνει τη γραμμή εκτύπωσης. 136 00:07:13,450 --> 00:07:16,420 >> Εντάξει, οπότε ας προχωρήσουμε στη συνέχεια σε κάποια άλλα πράγματα. 137 00:07:16,420 --> 00:07:18,620 Λοιπόν, πώς μπορούμε να ορίσουμε μεταβλητές στην πραγματικότητα; 138 00:07:18,620 --> 00:07:21,960 Μπορούμε να το κάνουμε αυτό είναι με τη χρήση μία από τις δύο μεθόδους. 139 00:07:21,960 --> 00:07:26,122 Και αυτό που θέλω να σας πω πρώτο είναι ο ορισμός αυτός let. 140 00:07:26,122 --> 00:07:27,830 Και αυτό είναι σημαντικό γιατί αποτελεσματικά 141 00:07:27,830 --> 00:07:30,240 αυτό που κάνουμε είναι μια σταθερά που καθορίζει. 142 00:07:30,240 --> 00:07:34,010 Θα δημιουργήσετε μια μεταβλητή, ή μάλλον ένα σταθερό όνομα που ονομάζεται, 143 00:07:34,010 --> 00:07:38,200 παρέχει σε αυτό μερικές data-- σε Στην περίπτωση αυτή, η σειρά Νταν. 144 00:07:38,200 --> 00:07:40,630 Αλλά με τη χρήση αυτής της let λέξη-κλειδί, λέμε 145 00:07:40,630 --> 00:07:43,860 ότι αυτό variable-- ή και πάλι constant-- ονομάζεται 146 00:07:43,860 --> 00:07:46,220 όνομα δεν πρόκειται ποτέ να αλλάξει. 147 00:07:46,220 --> 00:07:50,120 Είναι πρόκειται να είναι αμετάβλητη καθ 'όλη η διάρκεια του προγράμματος 148 00:07:50,120 --> 00:07:53,100 ή καθ 'όλη τη διάρκεια του πλαισίου 149 00:07:53,100 --> 00:07:55,390 ότι η μεταβλητή είναι διαθέσιμη. 150 00:07:55,390 --> 00:08:00,096 >> Αυτό είναι πολύ σημαντικό ότι όταν έχετε κάποια στοιχεία που δεν είναι 151 00:08:00,096 --> 00:08:02,970 πρόκειται να αλλάξει στο πρόγραμμά σας, και θα δείτε μια ποικιλία παραδειγμάτων 152 00:08:02,970 --> 00:08:06,790 περίπου, όταν θέλουμε να χρησιμοποιήσουμε ας σε σχέση με την άλλη σύνταξη, 153 00:08:06,790 --> 00:08:11,040 Είναι σημαντικό να χρησιμοποιείτε ας όπου αυτό είναι δυνατόν, επειδή αυτή ενημερώνει το 154 00:08:11,040 --> 00:08:13,740 η γλώσσα που είναι δεν πρόκειται να αλλάξει, 155 00:08:13,740 --> 00:08:16,590 και μπορεί στην πραγματικότητα να εκτελέσει πολλές βελτιστοποιήσεις 156 00:08:16,590 --> 00:08:19,560 για τη βελτίωση της ταχύτητας και της η ασφάλεια του προγράμματός σας. 157 00:08:19,560 --> 00:08:24,480 Και με την ασφάλεια, εννοώ όχι ας το δυστύχημα με τρελό λάθη 158 00:08:24,480 --> 00:08:27,910 ότι θα μπορούσαμε να συνηθίσει να βλέπουμε σε C. 159 00:08:27,910 --> 00:08:32,460 >> Στη συνέχεια, μπορούμε να χρησιμοποιήσουμε κλωστή παρεμβολή να ενσωματώσουν αυτό μέσα σε ένα string. 160 00:08:32,460 --> 00:08:35,200 Έτσι μπορούμε να δούμε σε αυτό το γραμμή εκτύπωσης, εκτύπωση Γεια σας, 161 00:08:35,200 --> 00:08:38,950 και στη συνέχεια, χρησιμοποιώντας ανάστροφη κάθετο ανοιχτό parens, και στη συνέχεια το όνομα μεταβλητής μου, 162 00:08:38,950 --> 00:08:41,809 στην περίπτωση αυτή σταθερή, κλείστε τις παρενθέσεις. 163 00:08:41,809 --> 00:08:46,400 Είμαι ουσιαστικά τότε βάζοντας το περιεχόμενα αυτής της μεταβλητής που ονομάζεται όνομα 164 00:08:46,400 --> 00:08:50,240 εντός της σειράς και, στη συνέχεια, εκτύπωση υπάρχει το αποτέλεσμα. 165 00:08:50,240 --> 00:08:54,070 >> Υπάρχει άλλη μια αλλαγή σε αυτό το αρχείο η οποία είναι ότι έχω, στην κορυφή, 166 00:08:54,070 --> 00:08:57,340 βάλει σε μια γραμμή δουλεία, η οποία ουσιαστικά καθορίζει μόνο 167 00:08:57,340 --> 00:09:00,180 ότι θέλω να χρησιμοποιήσω το Swift διερμηνέα, ο οποίος 168 00:09:00,180 --> 00:09:04,190 σημαίνει ότι δεν έχω πλέον να κατάρτιση αυτού του συγκεκριμένου προγράμματος. 169 00:09:04,190 --> 00:09:06,567 Μπορώ να τρέξει ακριβώς σαν τη δική της γραφή. 170 00:09:06,567 --> 00:09:09,400 Αλλά αυτό είναι, στην περίπτωση αυτή, πίσω οι σκηνές που καταρτίζονται και, στη συνέχεια, 171 00:09:09,400 --> 00:09:10,030 που τρέχει. 172 00:09:10,030 --> 00:09:13,540 Είναι απλά αόρατο σε εμάς. 173 00:09:13,540 --> 00:09:15,880 >> Εντάξει, ας προχωρήσουμε. 174 00:09:15,880 --> 00:09:19,650 Έτσι, υπάρχει ένα κομμάτι της πονηριάς ότι ακριβώς συνέβη πριν. 175 00:09:19,650 --> 00:09:23,230 Που σας έδειξα ότι μπορώ θα μπορούσε να ορίσει ένα σταθερό. 176 00:09:23,230 --> 00:09:25,490 Και θα μπορούσα να παρέχουν ορισμένα στοιχεία για να το κάνουμε. 177 00:09:25,490 --> 00:09:29,240 Αλλά στην περίπτωση αυτή, παρατηρούμε ότι δεν το έκανα στην πραγματικότητα να καθορίσετε τον τύπο των δεδομένων 178 00:09:29,240 --> 00:09:29,820 αυτο ειναι. 179 00:09:29,820 --> 00:09:32,780 Και αυτό γιατί η compiler, μπορεί Swift 180 00:09:32,780 --> 00:09:36,910 συναχθεί το είδος των δεδομένων που βασίζεται μόνο σχετικά με τα δεδομένα που έβαλα σε αυτό. 181 00:09:36,910 --> 00:09:41,760 Επειδή ξέρει ότι από την αξιολόγηση αυτή μεταβλητή ακριβώς εδώ, το δικαίωμα αυτό των δεδομένων 182 00:09:41,760 --> 00:09:43,370 Εδώ, θα ξέρει ότι είναι ένα string. 183 00:09:43,370 --> 00:09:48,690 Και έτσι αυτή η συνεχής όνομα είναι επομένως πρόκειται να είναι μια συμβολοσειρά, όπως καλά. 184 00:09:48,690 --> 00:09:52,730 >> Αλλά μπορούμε επίσης να είναι ρητή σχετικά με τον τύπο που είναι 185 00:09:52,730 --> 00:09:55,790 πρόκειται να χρησιμοποιήσει για σταθερές ή μεταβλητές 186 00:09:55,790 --> 00:10:01,590 χρησιμοποιώντας την ακόλουθη σύνταξη instead-- ας String όνομα του παχέος εντέρου ισοδυναμεί 187 00:10:01,590 --> 00:10:05,530 Dan, που στην προκειμένη περίπτωση σημαίνει ότι είμαστε πρόκειται να ορίσετε ένα σταθερό κάλεσε το όνομά του. 188 00:10:05,530 --> 00:10:07,150 Είναι πρόκειται να είναι τύπου String. 189 00:10:07,150 --> 00:10:10,550 Και η τιμή θα είναι ο Dan. 190 00:10:10,550 --> 00:10:12,550 Τώρα το άλλο τρόπο που μπορούμε να δημιουργήσουμε variables-- 191 00:10:12,550 --> 00:10:15,549 και αυτά είναι ευμετάβλητος μεταβλητές, οι οποίες σημαίνει ότι είμαστε, στην πραγματικότητα, πρόκειται 192 00:10:15,549 --> 00:10:19,670 να αλλάξουν το περιεχόμενό τους κάποια στιγμή στην διάρκεια του πλαισίου 193 00:10:19,670 --> 00:10:23,890 ότι η μεταβλητή defined-- μας χρησιμοποιούν τη λέξη-κλειδί var αντί ας. 194 00:10:23,890 --> 00:10:27,400 Αλλά και πάλι, από προεπιλογή, εκτός αν ξέρετε ότι θα πρέπει να χειριστούν αυτά τα δεδομένα, 195 00:10:27,400 --> 00:10:30,510 προσπαθήστε να χρησιμοποιήσετε αφήσει για βελτιώσεις στην απόδοση. 196 00:10:30,510 --> 00:10:33,740 >> Σε αυτήν την περίπτωση, μπορώ τότε προσδιορίζει το είδος των δεδομένων 197 00:10:33,740 --> 00:10:37,650 ότι περιμένουμε να είναι στο εσωτερικό του Αυτή η νέα μεταβλητή που ονομάζεται ετικέτα. 198 00:10:37,650 --> 00:10:38,800 Είναι πρόκειται να είναι ένα string. 199 00:10:38,800 --> 00:10:43,030 Και θα πάμε να ενώσετε στη συνέχεια, δύο χορδές μαζί, το string Γεια σας, 200 00:10:43,030 --> 00:10:48,070 και η σειρά που αντιπροσωπεύεται από το μεταβλητή, ή μάλλον το όνομα σταθεράς. 201 00:10:48,070 --> 00:10:50,660 >> Έτσι, αυτό είναι ωραίο, διότι αυτό Είναι κάπως σαν PHP στο ότι εμείς 202 00:10:50,660 --> 00:10:52,250 έχουν πολύ εύκολη συνένωση κορδόνι. 203 00:10:52,250 --> 00:10:56,350 Δεν έχουμε την αυτόματη χρησιμοποιήσετε οποιοδήποτε είδος της διαχείρισης μνήμης 204 00:10:56,350 --> 00:11:00,580 να αυξηθεί το μέγεθος και να κάνουμε κάθε είδους αστεία πράγματα εκεί. 205 00:11:00,580 --> 00:11:05,040 Αυτό λειτουργεί όπως θα αναμένουν. 206 00:11:05,040 --> 00:11:09,370 >> Εντάξει, οποιεσδήποτε ερωτήσεις σχετικά με αυτό; 207 00:11:09,370 --> 00:11:12,520 >> Τώρα ο άλλος λόγος για τον οποίο χρειαζόμαστε έχετε τη δυνατότητα 208 00:11:12,520 --> 00:11:15,490 να είναι σε θέση να προσδιορίσει τι είδος των μεταβλητών δεδομένων 209 00:11:15,490 --> 00:11:18,170 είναι γιατί μερικές φορές δεν το κάνουμε Θέλετε να προετοιμαστεί μεταβλητές 210 00:11:18,170 --> 00:11:21,080 με κάποια δεδομένα κατά τη σημείο ορισμού. 211 00:11:21,080 --> 00:11:23,500 Έτσι, σε αυτή την περίπτωση, ας πούμε ότι θέλω να ξεκινήσω την εισαγωγή 212 00:11:23,500 --> 00:11:25,040 ορισμένες ποιότητες σε ένα βιβλίο βαθμό. 213 00:11:25,040 --> 00:11:27,530 Καλά ξέρω ότι ένας από τους μεταβλητές που θέλω να 214 00:11:27,530 --> 00:11:30,280 πρόκειται να είναι ένα μεταβλητό βαθμό. 215 00:11:30,280 --> 00:11:33,010 Και γνωρίζουμε επίσης ότι εμείς θέλω να είναι ένας ακέραιος. 216 00:11:33,010 --> 00:11:36,030 Αλλά ίσως δεν το κάνουμε ακόμα έχουν αυτό το βαθμό διαθέσιμο. 217 00:11:36,030 --> 00:11:39,570 >> Σε Swift, θα πρέπει να καθορίσει τον τύπο των δεδομένων 218 00:11:39,570 --> 00:11:44,000 που σχετίζεται με ένα μεταβλητή ή σταθερή ας 219 00:11:44,000 --> 00:11:47,840 πριν μπορείτε πραγματικά χρησιμοποιήσετε αυτήν τη μεταβλητή. 220 00:11:47,840 --> 00:11:51,170 Επειδή είναι έντονα δακτυλογραφημένη, θα πρέπει να συνδέσει ένα είδος 221 00:11:51,170 --> 00:11:52,890 με αυτές τις μεταβλητές. 222 00:11:52,890 --> 00:11:56,120 >> Έτσι, σε αυτή την περίπτωση, αν δεν έχω σωστά αρχικοποιείται η πρώτη με κάποια αξία, 223 00:11:56,120 --> 00:12:00,520 τότε θα πρέπει να πείτε ό, τι Swift Περιμένω το είδος των δεδομένων να είναι. 224 00:12:00,520 --> 00:12:02,650 Και αυτό πρόκειται να παραμείνει το ίδιο είδος δεδομένων 225 00:12:02,650 --> 00:12:05,780 σε όλη την ιστορία του εν λόγω προγράμματος. 226 00:12:05,780 --> 00:12:10,050 >> Τώρα μπορείτε να μπείτε στον πειρασμό, το συντομότερο Έχω δημιουργήσει αυτή τη μεταβλητή Βαθμός 227 00:12:10,050 --> 00:12:13,530 και ένα που παρέχονται ακέραιος αριθμός 100, τώρα αν μου 228 00:12:13,530 --> 00:12:18,540 θέλουν να προσπαθήσουν να ενώσετε ένα string με αυτό το ακέραιο, 229 00:12:18,540 --> 00:12:21,610 θα μπορούσαν να μπουν στον πειρασμό να εξακολουθούν να χρησιμοποιούν ο εν λόγω φορέας κορδόνι συνένωσης 230 00:12:21,610 --> 00:12:24,500 όπως κάναμε μόλις πριν λίγες γραμμές. 231 00:12:24,500 --> 00:12:26,460 Αλλά δυστυχώς, Αυτή η πραγματικότητα δεν θα 232 00:12:26,460 --> 00:12:29,270 λειτουργήσει, επειδή είστε ουσιαστικά την εκτέλεση 233 00:12:29,270 --> 00:12:32,380 μια λειτουργία σε δύο διαφορετικούς τύπους. 234 00:12:32,380 --> 00:12:36,856 >> Τώρα αυτό είναι πολύ διαφορετικό από τα άλλα γλώσσες όπως η PHP που είναι πραγματικά 235 00:12:36,856 --> 00:12:38,480 loosey goosey με το είδος τους τύπους. 236 00:12:38,480 --> 00:12:40,030 Είναι ακριβώς όπως, ναι, ό, δεν με νοιάζει. 237 00:12:40,030 --> 00:12:42,710 Απλά να μου δώσει έναν τύπο, και ίσως θα κάνω το σωστό. 238 00:12:42,710 --> 00:12:46,060 >> Σε αυτή την περίπτωση, το Swift είναι εξαιρετικά αυστηρές για τους τύπους 239 00:12:46,060 --> 00:12:47,350 ότι έχουμε να κάνουμε με. 240 00:12:47,350 --> 00:12:50,700 Ο εν λόγω φορέας άθροισμα ή τελεστής συνένωσης 241 00:12:50,700 --> 00:12:54,400 έχει ουσιαστικά ένα ζευγάρι των διάφορες πιθανές εναλλακτικές λύσεις. 242 00:12:54,400 --> 00:12:56,970 Μπορείτε να κάνετε άθροισμα με ακέραιους αριθμούς, ή να σας 243 00:12:56,970 --> 00:13:00,870 μπορεί να κάνει εγχόρδων συνένωσης, και ίσως κάποια άλλα πράγματα επίσης. 244 00:13:00,870 --> 00:13:05,550 Αλλά αν ο εν λόγω φορέας δεν αναγνωρίζει ό, τι είναι σε κάθε πλευρά του, 245 00:13:05,550 --> 00:13:10,452 ή μάλλον το συνδυασμό αυτών δύο τύπων, δεν είναι αυτό που περιμένουμε είναι, 246 00:13:10,452 --> 00:13:11,910 τότε πρόκειται να προκαλέσει την αποτυχία. 247 00:13:11,910 --> 00:13:16,690 >> Έτσι, σε αυτή την περίπτωση, τι σημαίνει αυτό να έχουν μια σειρά συν έναν ακέραιο; 248 00:13:16,690 --> 00:13:18,880 Λοιπόν, στο πλαίσιο της αυτό, μάλλον θα θέλετε 249 00:13:18,880 --> 00:13:21,990 να κάνει μια πράξη συνένωσης κορδόνι. 250 00:13:21,990 --> 00:13:26,420 Αλλά φυσικά ο υπολογιστής δεν έχει αυτό το είδος του περιβάλλοντος. 251 00:13:26,420 --> 00:13:29,950 Και γι 'αυτό πρέπει να παρέχει ότι οι πρόσθετες πληροφορίες 252 00:13:29,950 --> 00:13:32,390 να το αφήσει να ξέρετε τι είναι ότι θέλουμε να κάνουμε. 253 00:13:32,390 --> 00:13:36,860 >> Έτσι, με άλλα λόγια, το γεγονός ότι Swift είναι έντονα δακτυλογραφημένη 254 00:13:36,860 --> 00:13:39,520 σημαίνει ότι πρέπει να κάνουμε λίγη πρόσθετη εργασία 255 00:13:39,520 --> 00:13:42,100 για να το πάρει για να λειτουργήσει η τον τρόπο που θα θέλατε. 256 00:13:42,100 --> 00:13:43,710 Αλλά, ως αποτέλεσμα, είναι ασφαλέστερο. 257 00:13:43,710 --> 00:13:46,290 Και αφού έχετε λάβει υπόψη αυτούς τους τύπους, 258 00:13:46,290 --> 00:13:49,300 τα πράγματα απλά ειλικρινά ξεκινήσει να λειτουργήσει αρκετά καλά. 259 00:13:49,300 --> 00:13:52,520 >> Έτσι, σε αυτή την περίπτωση, θα ήμασταν εκτελέσει αλληλουχία συμβολοσειρών 260 00:13:52,520 --> 00:13:56,040 με τη ρητή χύτευση ο ακέραιος σε μια σειρά 261 00:13:56,040 --> 00:13:58,490 τυλίγοντάς το σε αυτό το πρωτεύουσα λειτουργία S String, 262 00:13:58,490 --> 00:14:03,510 και στη συνέχεια, χρησιμοποιώντας τη συνένωση εγχόρδων χειριστή να τροποποιήσει μεταβλητή ετικέτας μας, 263 00:14:03,510 --> 00:14:06,280 και στη συνέχεια να εκτυπώσετε. 264 00:14:06,280 --> 00:14:08,420 >> Μέχρι εδώ καλά? 265 00:14:08,420 --> 00:14:12,020 Εντάξει, ας προχωρήσουμε. 266 00:14:12,020 --> 00:14:16,300 >> Τώρα υπάρχει μια ποικιλία από στοιχεία τύποι που μπορούμε να χρησιμοποιήσουμε σε Swift. 267 00:14:16,300 --> 00:14:21,620 Όπως έχετε συνηθίσει, μπορούμε να δημιουργήσουμε μια συστοιχία ευμετάβλητος. 268 00:14:21,620 --> 00:14:26,140 Και αυτό μπορεί μόνο συστοιχία περιέχουν ένα μόνο είδος. 269 00:14:26,140 --> 00:14:30,360 >> Έτσι, σε αυτή την περίπτωση, θα πάμε να δημιουργήσουμε ένα μεταβλητό συστοιχίες των ακέραιων αριθμών, η οποία 270 00:14:30,360 --> 00:14:34,800 θα καλέσει τους βαθμούς, και θα είμαστε σε θέση για να αποθηκεύσετε ότι σε αυτή την αγκύλη 271 00:14:34,800 --> 00:14:38,650 μορφή, όπως έχετε συνηθίσει σε σε μια ποικιλία από άλλες γλώσσες. 272 00:14:38,650 --> 00:14:41,150 Αλλά παρατηρώ ότι εδώ είμαστε ορισμό μερικά πράγματα. 273 00:14:41,150 --> 00:14:45,350 βαθμοί είναι ευμετάβλητος variable-- που δεν χρησιμοποιούν τη λέξη-κλειδί let. 274 00:14:45,350 --> 00:14:49,620 Έτσι αυτό σημαίνει ότι μπορούμε στη συνέχεια να τροποποιήσετε τα περιεχόμενα αυτής της συστοιχίας. 275 00:14:49,620 --> 00:14:53,420 Είναι τύπου Array Int, και μπορούμε να πούμε ότι 276 00:14:53,420 --> 00:14:56,260 με βάση αυτές τις αγκύλες εδώ. 277 00:14:56,260 --> 00:14:58,930 >> Τώρα, ένα από τα ωραία πράγματα γι 'αυτό είναι ότι εμείς 278 00:14:58,930 --> 00:15:02,310 να έχουν πρόσβαση σε πολλές Επιπλέον πληροφορίες 279 00:15:02,310 --> 00:15:07,110 σχετικά με τη σειρά απλά χρησιμοποιώντας μερικές απλές συμβολισμό με την τελεία. 280 00:15:07,110 --> 00:15:10,500 Έτσι, για παράδειγμα, grades.count παρέχει σε μας 281 00:15:10,500 --> 00:15:14,820 ο αριθμός των αντικειμένων που υπάρχουν σε ότι συστοιχία, η οποία θα μπορεί να έχει πρόσβαση αρκετά 282 00:15:14,820 --> 00:15:19,090 εύκολα χρησιμοποιώντας απλά ότι συμβολισμό με την τελεία. 283 00:15:19,090 --> 00:15:21,830 >> Αν θέλετε να προσθέσετε επιπλέον αντικείμενο σε αυτή την σειρά, 284 00:15:21,830 --> 00:15:27,220 δεν μπορείτε να κάνετε το στυλ PHP όπου μπορείτε απλά ορίζουν ρητά, 285 00:15:27,220 --> 00:15:30,910 σε μια δεδομένη δείκτη, κάποια αξία ότι θέλετε να εισαγάγετε. 286 00:15:30,910 --> 00:15:37,210 Αντ 'αυτού, χρησιμοποιήστε το προσάρτησης μέθοδος στον τύπο συστοιχίας 287 00:15:37,210 --> 00:15:40,920 να προσθέσετε αυτό το στοιχείο, 95, σε αυτή τη λίστα. 288 00:15:40,920 --> 00:15:45,990 >> Έτσι τώρα που ο πίνακας αυτός έχει την ακόλουθη contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 Και τώρα έχουμε συνημμένων 95 με αυτό, καθώς και. 290 00:15:49,270 --> 00:15:51,830 >> Υπάρχουν και άλλοι τρόποι μπορούμε να προσαρτήσει τα πράγματα. 291 00:15:51,830 --> 00:15:55,030 Μπορείτε πραγματικά να χρησιμοποιήσετε ένα συντελεστή άθροισης, 292 00:15:55,030 --> 00:15:59,200 η οποία θα πρέπει να ερμηνευθεί ως μια συστοιχία λειτουργία προσάρτησης. 293 00:15:59,200 --> 00:16:04,680 Και τότε μπορείτε να προσθέσετε ένα άλλο σειρά, το περιεχόμενο των οποίων είναι 70 και 80, 294 00:16:04,680 --> 00:16:05,560 στην εν λόγω συστοιχία. 295 00:16:05,560 --> 00:16:08,250 Έτσι τώρα έχουμε το περιεχόμενο σε αυτή τη μεταβλητή 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70, και 80. 297 00:16:17,220 --> 00:16:21,850 Αυτό είναι απλά ένα ωραίο μικρό συντακτική ζάχαρη που Swift παρέχει για εμάς. 298 00:16:21,850 --> 00:16:23,850 >> Έτσι, αν θέλουμε να συνοψίσουμε η βαθμούς, είμαστε ίσως 299 00:16:23,850 --> 00:16:27,340 πρόκειται να θέλουν να επαναλάβει πάνω από κάθε στοιχείο σε αυτό το βρόχο. 300 00:16:27,340 --> 00:16:32,150 Και έχουμε, σε Swift, η έννοια ενός βρόχου for, όπως θα περίμενε κανείς. 301 00:16:32,150 --> 00:16:35,350 Αλλά ο τρόπος που υποδεικνύουν μια σειρά είναι ελαφρώς διαφορετική. 302 00:16:35,350 --> 00:16:37,790 Έτσι, στην περίπτωση αυτή, να Συνοψίζοντας τα πάντα, θα 303 00:16:37,790 --> 00:16:40,650 πρόκειται να δημιουργήσει ένα προσωρινό μεταβλητή που ονομάζεται άθροισμα προκειμένου για εμάς 304 00:16:40,650 --> 00:16:42,580 να διατηρηθεί αυτή η καταμέτρηση. 305 00:16:42,580 --> 00:16:44,430 >> Και να παρατηρήσετε για μας κατασκευή βρόχου εδώ. 306 00:16:44,430 --> 00:16:46,820 Για το δείκτη σε 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Έτσι, αυτή η κατασκευή, 0 .. 00:17:01,860 λέγοντας ότι πρόκειται να δημιουργήσουν μια σειρά από ακέραιοι από 0 έως 310 00:17:01,860 --> 00:17:05,750 με εξαίρεση όμως grades.count. 311 00:17:05,750 --> 00:17:09,577 Έτσι, αυτό θα είναι 0, 1, 2, 3, 4, 5, μέχρι όμως πολλά το ένα 312 00:17:09,577 --> 00:17:10,410 πριν grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Έτσι, αυτό είναι διαφορετικό από το πώς θα θα χρησιμοποιούνται συνήθως για βρόχους 314 00:17:14,160 --> 00:17:18,569 όπου θα έχουν κάποιο δείκτη μεταβλητή, ίση με μηδέν ορίζεται κατά την πρώτη, 315 00:17:18,569 --> 00:17:25,480 και στη συνέχεια να ενσωματώσει ότι μέχρι κάποια τιμή μικρότερη από την καταμέτρηση των αντικειμένων 316 00:17:25,480 --> 00:17:27,140 στην εν λόγω συστοιχία. 317 00:17:27,140 --> 00:17:29,820 >> Έτσι, υπάρχει μια τροποποίηση σε αυτό, στην πραγματικότητα, 318 00:17:29,820 --> 00:17:35,010 η οποία μας επιτρέπει να πολύ εύκολα ορίσετε διαφορετικούς τύπους περιοχών. 319 00:17:35,010 --> 00:17:40,570 Εάν αλλάξετε το εύρος αυτό να τρεις τελείες, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 αυτό αντιπροσωπεύει το εύρος 0 να grades.count χωρίς αποκλεισμούς, 321 00:17:45,120 --> 00:17:49,260 πράγμα που σημαίνει ότι ο αριθμός αυτός είναι επίσης Στη συνέχεια περιλαμβάνονται σε αυτή την περιοχή. 322 00:17:49,260 --> 00:17:52,110 >> Αλλά αυτό είναι πολύ βολικό για αυτές ακριβώς τα πράγματα, 323 00:17:52,110 --> 00:17:54,590 όταν έχουμε να εκτελεί επαναλήψεις πάνω βρόχου 324 00:17:54,590 --> 00:17:59,630 επειδή οι εν λόγω δείκτες είναι μηδέν ευρετήριο, όπως έχουμε δει σε άλλες γλώσσες 325 00:17:59,630 --> 00:18:02,360 επισης. 326 00:18:02,360 --> 00:18:05,210 Οποιεσδήποτε ερωτήσεις σχετικά με αυτό για βρόχο; 327 00:18:05,210 --> 00:18:10,660 >> Έτσι υπάρχει έμμεσο ορισμό αυτής της μεταβλητής δείκτη, 328 00:18:10,660 --> 00:18:14,350 αξία των οποίων αρχίζει στις 0, και συνεχίζεται σε κάθε επανάληψη βρόχου 329 00:18:14,350 --> 00:18:17,950 να αυξηθεί κατά 1 μέχρι ενός σημείου ότι είναι ίσο με grades.count, 330 00:18:17,950 --> 00:18:20,380 σε ποιο σημείο, ο βρόχος ματαιώνεται. 331 00:18:20,380 --> 00:18:23,730 >> Παρατηρήστε ότι στο κορδόνι μας Παρεμβολή εδώ, 332 00:18:23,730 --> 00:18:26,910 μπορούμε πραγματικά να εκτελέσετε ορισμένες απλές χειρισμούς σε αυτές τις αξίες. 333 00:18:26,910 --> 00:18:31,230 Έτσι, ο δείκτης συν 1 θα είναι πράγματι εκτελέσει ένα άθροισμα της αξίας 334 00:18:31,230 --> 00:18:34,780 επειδή ο δείκτης είναι, σε Στην περίπτωση αυτή, ένας ακέραιος. 335 00:18:34,780 --> 00:18:37,810 Και σε αυτό το σημείο, θα στη συνέχεια να μετατρέπεται σε μία στοιχειοσειρά 336 00:18:37,810 --> 00:18:42,230 και παρεμβολής σε αυτήν την συμβολοσειρά εδώ, και να εκτυπωθούν, όπως θα περίμενε κανείς. . 337 00:18:42,230 --> 00:18:44,520 >> Και το ωραίο σχετικά με τις συστοιχίες είναι εδώ 338 00:18:44,520 --> 00:18:50,730 ότι είμαστε επίσης σε θέση να έχουν γοητευτικός αξίες και τιμές ρύθμισης 339 00:18:50,730 --> 00:18:54,080 χρησιμοποιώντας την αγκύλη σημειογραφία ως έχουμε δει σε άλλες γλώσσες, καθώς και. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Εντάξει, έτσι ώστε από εδώ, τώρα υπολογίζουν άθροισμα όλων μας των βαθμών μας. 342 00:19:01,030 --> 00:19:02,780 Τώρα είδος της επόμενης λογικό βήμα θα ήταν 343 00:19:02,780 --> 00:19:07,580 να κάνει μια πράξη της διαίρεσης να βρείτε από τον μέσο όρο των κατηγοριών αυτών. 344 00:19:07,580 --> 00:19:10,150 Αλλά κάτι σημαντικό Εδώ συμβαίνει το οποίο 345 00:19:10,150 --> 00:19:15,020 είναι ότι το ποσό αυτό είναι ίσως ένας ακέραιος. 346 00:19:15,020 --> 00:19:18,020 Αλλά πρέπει να εκτελούν ορισμένα είδος της διπλής διαίρεσης. 347 00:19:18,020 --> 00:19:20,600 Και αυτό πρόκειται να είναι εξαιρετικά σημαντικό όταν 348 00:19:20,600 --> 00:19:24,140 θέλουμε να εκτελέσετε αυτή τη λειτουργία, διότι αυτό που λέμε 349 00:19:24,140 --> 00:19:28,430 είναι ότι πρέπει πραγματικά να εκτελεί διαίρεση σε δύο διπλά. 350 00:19:28,430 --> 00:19:31,370 Και πάλι, επειδή Swift είναι πολύ έντονα δακτυλογραφημένη, 351 00:19:31,370 --> 00:19:36,760 πρέπει να οριστεί ρητά όλα τα στοιχεία για διπλά προτού πραγματικά 352 00:19:36,760 --> 00:19:38,300 εκτέλεσης αυτής της λειτουργίας. 353 00:19:38,300 --> 00:19:40,550 >> Έτσι, για να μπορέσουμε να εκτελούν διπλή διαίρεση, 354 00:19:40,550 --> 00:19:43,730 δεν είναι επαρκής για ένα μόνο των ειδών αυτών είναι διπλός. 355 00:19:43,730 --> 00:19:46,400 Και τα δύο πρέπει να είναι ένα διπλά για τη λήψη άμεσων 356 00:19:46,400 --> 00:19:50,860 να είστε σίγουροι ότι αυτό το είναι ό, τι θέλουμε να κάνουμε. 357 00:19:50,860 --> 00:19:54,360 Γι 'αυτό και στη συνέχεια θα typecast ρητά το ποσό που έχουμε υπολογίζονται πάνω 358 00:19:54,360 --> 00:19:58,970 και ο αριθμός των βαθμών σε δίκλινα, και στη συνέχεια, εκτελέστε αυτή τη λειτουργία και την αποθήκευση 359 00:19:58,970 --> 00:20:02,390 ότι σε αυτή τη νέα μεταβλητή, ή μάλλον Αυτή η νέα σταθερή ονομάζεται μέσο όρο, 360 00:20:02,390 --> 00:20:06,810 η οποία θα έχει τι είδους, να το φανταστείτε; 361 00:20:06,810 --> 00:20:07,587 Διπλό, ναι. 362 00:20:07,587 --> 00:20:09,420 Έτσι, σε αυτή την περίπτωση, θα Δεν πρέπει να το καθορίσετε 363 00:20:09,420 --> 00:20:13,450 επειδή μπορεί να συναχθεί από το λειτουργία τον τύπο του μέσου όρου των δεδομένων 364 00:20:13,450 --> 00:20:14,730 θα είναι. 365 00:20:14,730 --> 00:20:19,025 Και Swift είναι γενικά αρκετά καλή για να είναι σε θέση να συμπεράνει τους τύπους. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Θέλετε να δείτε αυτό το τρέχουν, ή μπορώ να προχωρήσω; 368 00:20:24,200 --> 00:20:25,640 Θέλω να συνεχίσω. 369 00:20:25,640 --> 00:20:28,130 Οποιεσδήποτε ερωτήσεις σχετικά με όλα αυτά; 370 00:20:28,130 --> 00:20:28,630 Εξαιρετική. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Τώρα θα πάμε να αρχίσουν να φτάσετε στο οι καλές stuff-- λειτουργίες που καθορίζει, 373 00:20:35,010 --> 00:20:39,090 και ένα ζευγάρι των άλλων τύπων που είναι μοναδική για Swift που δεν έχετε 374 00:20:39,090 --> 00:20:41,620 δει σε άλλες γλώσσες μέχρι αυτό το σημείο, 375 00:20:41,620 --> 00:20:46,290 αλλά είναι παρούσες σε άλλες γλώσσες που μπορείτε να βρείτε αργότερα. 376 00:20:46,290 --> 00:20:48,210 Έτσι, πρώτα αν θέλετε να ορίσουμε μια συνάρτηση, 377 00:20:48,210 --> 00:20:52,170 μπορείτε να ορίσετε με το funky λέξη λειτουργία, και στη συνέχεια το όνομα της συνάρτησης, 378 00:20:52,170 --> 00:20:56,710 και στη συνέχεια σε παρενθέσεις, τα επιχειρήματα ότι θέλετε αυτή η λειτουργία να αποδεχθεί. 379 00:20:56,710 --> 00:21:00,280 Τα επιχειρήματα αυτά πρέπει επίσης να specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 Πρέπει επίσης να προσδιορίζει το είδος των δεδομένων που είναι, εκτός αν μπορεί να συναχθεί. 381 00:21:05,010 --> 00:21:07,500 Και θα δούμε ότι λίγο προειδοποίηση σε μόλις ένα μικρό κομμάτι. 382 00:21:07,500 --> 00:21:09,920 >> Έτσι, σε αυτή την περίπτωση έχουμε ένα λειτουργία που ονομάζεται printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Εμείς πάμε για να δεχτεί μια variable-- ή μάλλον σε αυτήν την περίπτωση, 384 00:21:12,840 --> 00:21:14,450 α constant-- ονομάζεται Βαθμολόγιο. 385 00:21:14,450 --> 00:21:18,517 Και αυτό πρόκειται να είναι της Τύπος πίνακα ακεραίων. 386 00:21:18,517 --> 00:21:20,600 Τώρα υπάρχει κάτι αυτό είναι πραγματικά σημαντικό εδώ 387 00:21:20,600 --> 00:21:21,849 ότι θέλω να καταλάβετε. 388 00:21:21,849 --> 00:21:27,560 Αυτό είναι ότι από προεπιλογή, αυτά τα επιχειρήματα που είναι οι συντελεστές αυτής της λειτουργίας είναι 389 00:21:27,560 --> 00:21:34,380 ορίζεται με μια σιωπηρή λέξη let, πράγμα που σημαίνει ότι δεν μπορώ να τροποποιήσει αυτό 390 00:21:34,380 --> 00:21:39,850 Βαθμολόγιο μεταβλητή εδώ. 391 00:21:39,850 --> 00:21:43,360 Και αυτό το είδος της νόημα, επειδή είστε το πέρασμα των δεδομένων σε. 392 00:21:43,360 --> 00:21:45,860 Και ίσως δεν το θέλουν να αλλάξει από κάτω σας. 393 00:21:45,860 --> 00:21:50,800 Είναι δυνατόν να αναφέρεται ρητώς ότι αυτό είναι μια μεταβλητή με την τοποθέτηση 394 00:21:50,800 --> 00:21:52,070 η λέξη-κλειδί var εδώ. 395 00:21:52,070 --> 00:21:56,832 Αλλά αυτό είναι μια gotcha που έχουμε Παρατήρησα άνθρωποι έχουν γίνει στο παρελθόν 396 00:21:56,832 --> 00:21:59,790 είναι ότι υποτίθεται ότι πρόκειται να είναι μια μεταβλητή όταν, στην πραγματικότητα, 397 00:21:59,790 --> 00:22:02,640 είναι μια σταθερά. 398 00:22:02,640 --> 00:22:07,340 >> Εντάξει, έτσι και εδώ, στη συνέχεια, στην περίπτωση αυτή, εμείς δεν προσδιορίζουν κάποιο είδος επιστροφής. 399 00:22:07,340 --> 00:22:09,460 Θα σας δείξουμε πώς να το κάνουμε ότι ακριβώς σε μια στιγμή. 400 00:22:09,460 --> 00:22:12,340 Να σημειωθεί όμως ότι εδώ έχουμε μόνο ένα απλό αν η κατάσταση. 401 00:22:12,340 --> 00:22:14,560 Αν βαθμολόγιο είναι άδειο, η οποία σε αυτή την περίπτωση 402 00:22:14,560 --> 00:22:19,310 είναι ακριβώς η ιδιότητα αυτού του ακεραίου σειρά, τότε θα εκτυπώσετε κάτι. 403 00:22:19,310 --> 00:22:23,100 Διαφορετικά κάνουμε κάτι άλλο. 404 00:22:23,100 --> 00:22:25,000 >> Αρκετά απλή μέχρι στιγμής νομίζω. 405 00:22:25,000 --> 00:22:27,960 Αλλά να με σταματήσει, εάν έχετε οποιεσδήποτε ερωτήσεις. 406 00:22:27,960 --> 00:22:33,350 >> Τώρα αυτή η λειτουργία, κατά μέσο όρο, λαμβάνει επίσης ορισμένα επιχειρήματα, ή μάλλον ένα επιχείρημα, 407 00:22:33,350 --> 00:22:37,507 το οποίο είναι το βαθμολόγιο, και αυτή τη φορά πρόκειται να επιστρέψει ένα διπλό τύπο. 408 00:22:37,507 --> 00:22:39,340 Επειδή είναι υπολογιστών το μέσο όρο και είναι 409 00:22:39,340 --> 00:22:45,010 πρόκειται να επιστρέψει στην πραγματικότητα ότι υπολογισμένες κατά μέσο όρο στο καλούσας γραμμής. 410 00:22:45,010 --> 00:22:50,070 >> Σε αυτή την περίπτωση, εμείς καθορίζουμε το Τύπος επιστρέψει μετά από ένα βέλος. 411 00:22:50,070 --> 00:22:53,260 Και αυτό μπορεί να αισθάνονται είδος περίεργο στην αρχή. 412 00:22:53,260 --> 00:22:55,610 Έχετε συνηθίσει για τον καθορισμό της επιστροφής 413 00:22:55,610 --> 00:22:57,720 πληκτρολογήστε πριν από το όνομα της συνάρτησης. 414 00:22:57,720 --> 00:23:00,310 Αλλά αν νομίζετε ότι αυτό από την άποψη των μαθηματικών, 415 00:23:00,310 --> 00:23:03,320 όπως όταν έχετε τα μαθηματικά ότι ορίζουμε μια συνάρτηση, 416 00:23:03,320 --> 00:23:06,807 έχετε μια συνάρτηση με κάποια εισόδους και παράγει μία έξοδο. 417 00:23:06,807 --> 00:23:08,890 Και αυτό είναι ακριβώς ό, τι αυτό υποτίθεται ότι μιμούνται. 418 00:23:08,890 --> 00:23:12,460 Και υπάρχει μια-δυο άλλες γλώσσες ότι έχουν παρόμοια σύνταξη, καθώς, 419 00:23:12,460 --> 00:23:15,674 αλλά μάλλον κανένας ότι έχετε δει σε CS50. 420 00:23:15,674 --> 00:23:17,090 Αλλά και πάλι δεν πρέπει να συγχέεται με αυτό. 421 00:23:17,090 --> 00:23:21,650 Το βέλος σημαίνει ότι ό, τι συμβαίνει να επιστρέψει σε αυτή την περίπτωση. 422 00:23:21,650 --> 00:23:23,650 Εντάξει, έτσι πώς θα πάμε για τον υπολογισμό αυτού του μέσου όρου; 423 00:23:23,650 --> 00:23:25,649 Λοιπόν, αν το βαθμολόγιο Είναι άδειο, αλλά τότε είμαστε 424 00:23:25,649 --> 00:23:30,731 πρόκειται να επιστρέψει 0, το οποίο ίσως ένας λογικός τρόπος για να αντιμετωπίσει αυτό. 425 00:23:30,731 --> 00:23:32,980 Δεν ξέρω, ας έρθει πίσω σε αυτό σε λίγο. 426 00:23:32,980 --> 00:23:34,688 Αυτό δεν μπορεί στην πραγματικότητα να είναι ένας λογικός τρόπος 427 00:23:34,688 --> 00:23:38,310 να υπολογίσει κατά μέσο όρο, αν έχουμε ένα άδειο Βαθμολόγιο. 428 00:23:38,310 --> 00:23:41,260 >> Στη συνέχεια, θα εκτελέσει ακριβώς άθροιση μας. 429 00:23:41,260 --> 00:23:43,900 Παρατηρήστε ότι εδώ έχουμε πραγματικά έχουν μια εναλλακτική εκδοχή ενός 430 00:23:43,900 --> 00:23:49,190 για το βρόχο, η οποία μας επιτρέπει να επαναλάβει πάνω από κάθε στοιχείο ενός συνόλου 431 00:23:49,190 --> 00:23:53,630 και τοποθετήστε κάθε στοιχείο στη δική μεταβλητή της. 432 00:23:53,630 --> 00:23:56,200 Με τον καθορισμό του βαθμού στον βαθμολόγιο, αυτό που λέμε 433 00:23:56,200 --> 00:24:00,560 είναι ότι θα πάμε να σιωπηρά δημιουργήσετε ένα νέο σταθερό ονομάζεται 434 00:24:00,560 --> 00:24:05,180 βαθμού που πρόκειται να αντιπροσωπεύσει Κάθε μοναδικό στοιχείο στο βαθμολόγιο 435 00:24:05,180 --> 00:24:06,769 κάθε φορά που το βρόχο for εκτελεί επαναλήψεις. 436 00:24:06,769 --> 00:24:08,560 Έτσι, η πρώτη φορά που αυτό είναι τρέξει, θα Βαθμός 437 00:24:08,560 --> 00:24:09,800 είναι το πρώτο στοιχείο στο βαθμολόγιο. 438 00:24:09,800 --> 00:24:12,300 Η δεύτερη φορά θα είναι η δεύτερο στοιχείο, έτσι καθεξής και ούτω καθεξής 439 00:24:12,300 --> 00:24:15,970 μέχρι Βαθμολόγιο έχει εξαντλήσει στοιχείων. 440 00:24:15,970 --> 00:24:20,390 Τότε θα είμαστε σε θέση να συνοψίσω ότι βαθμού σε μεταβλητή άθροισμα μας 441 00:24:20,390 --> 00:24:22,570 και να επιστρέψει μέση μας όπως έχουμε δει στο παρελθόν. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 Εντάξει, οποιεσδήποτε ερωτήσεις; 444 00:24:26,950 --> 00:24:27,699 Ναί? 445 00:24:27,699 --> 00:24:28,990 Κοινό: Έχω δύο ερωτήσεις. 446 00:24:28,990 --> 00:24:33,586 Νούμερο ένα, υποθετικά, μπορεί να τρέχετε ακέραιο σε αυτό το σημείο; 447 00:24:33,586 --> 00:24:35,604 Δεν χρειάζεται να είναι ένα διπλά, είναι ότι η σωστή; 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: Μπορείτε να επαναλάβετε αυτή την ερώτηση; 449 00:24:37,520 --> 00:24:39,587 Κοινό: Μπορώ να κάνω ακέραιος ως ο μέσος όρος; 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: Μπορείτε να κάνει ακέραιος ως ο μέσος όρος; 451 00:24:41,670 --> 00:24:45,015 Έτσι επιστρέφουν έναν ακέραιο μέσο όρο αντί για ένα διπλό; 452 00:24:45,015 --> 00:24:48,204 >> Κοινό: Σας Return-- έχουν αυτό το δικαίωμα τώρα παρακάτω. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Ακριβώς εδώ, επιστρέψτε 0.0; 454 00:24:49,870 --> 00:24:51,790 Κοινό: Ναι, μόλις επιστρέψει 0. 455 00:24:51,790 --> 00:24:56,590 Έτσι, θα είναι είτε 80 ή 85, αλλά όχι 85.2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Έτσι, στην περίπτωση αυτή, έτσι υπάρχει ένα ζευγάρι διαφορετικούς τρόπους 457 00:24:59,465 --> 00:25:00,090 για να απαντήσετε σε αυτό. 458 00:25:00,090 --> 00:25:02,760 Επιτρέψτε μου να τις απαντήσω με τη σειρά. 459 00:25:02,760 --> 00:25:06,740 Έτσι, αν κάνω μόνο αυτό το κέρδος 0, μια 0 είναι ένας ακέραιος αριθμός. 460 00:25:06,740 --> 00:25:09,730 Και έτσι ώστε θα προκαλέσει Σφάλμα τύπου για την περίπτωση αυτή 461 00:25:09,730 --> 00:25:13,210 επειδή αναμένει ένα διπλό αλλά στη συνέχεια επιστρέφει έναν ακέραιο. 462 00:25:13,210 --> 00:25:16,770 Αν θέλω να επιστρέφουν έναν ακέραιο, μπορώ. 463 00:25:16,770 --> 00:25:20,450 Μπορώ να ορίσετε τον τύπο επιστροφής σε int, επιστρέφει 0 εδώ, 464 00:25:20,450 --> 00:25:22,047 και να μην εκτελέσει διπλή διαίρεση. 465 00:25:22,047 --> 00:25:23,880 Αλλά τότε θα είμαστε κάνει διαίρεσης. 466 00:25:23,880 --> 00:25:27,080 Και γι 'αυτό τότε δεν θα πάρει το κατά μέσο όρο ότι θα ίσως περιμένατε. 467 00:25:27,080 --> 00:25:29,210 Αλλά ναι, μπορούμε να τροποποιήσουμε οι τύποι με αυτόν τον τρόπο. 468 00:25:29,210 --> 00:25:32,598 >> Κοινό: Και δεύτερον, θα έχει το ένα διπλό στην κορυφή. 469 00:25:32,598 --> 00:25:35,502 Αλλά κάτω από, όταν κάνει την επιστροφή Διπλό, 470 00:25:35,502 --> 00:25:38,280 ότι είναι ήδη αυτόματα επιστροφή Διπλό μορφή. 471 00:25:38,280 --> 00:25:42,278 Γιατί θα πρέπει ακόμα να την ορίσουμε με το βέλος στην κορυφή με ένα διπλό; 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: Λοιπόν σε περίπτωση, αυτό είναι μέρος 473 00:25:45,010 --> 00:25:50,580 της the-- ώστε να επαναλάβει την ερώτηση, επειδή είναι σιωπηρή από την επιστροφή 474 00:25:50,580 --> 00:25:56,030 τύπους εδώ, το είδος αυτό στην πραγματικότητα είναι, πρέπει να είμαστε σαφείς με Swift 475 00:25:56,030 --> 00:25:59,970 σχετικά με το τι θέλουμε να επιστρέφουν από αυτή την λειτουργία 476 00:25:59,970 --> 00:26:02,690 έτσι ώστε όταν εκτελεί Τύπος τον έλεγχο, μπορεί να βεβαιωθείτε 477 00:26:02,690 --> 00:26:05,850 ότι αυτό που έχουμε στην πραγματικότητα γραμμένο κάτω από συμμορφώνεται πραγματικά με αυτό. 478 00:26:05,850 --> 00:26:10,225 Έτσι είναι το είδος του σαν επιταγή με τον εαυτό σας το είδος της κατάστασης. 479 00:26:10,225 --> 00:26:11,050 Αλλά υπάρχει are-- 480 00:26:11,050 --> 00:26:12,560 >> Κοινό: [δεν ακούγεται] arrow; 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: Υπάρχουν περιπτώσεις, όταν μπορούμε να καθορίσουμε ότι μπορούμε σιωπηρά 482 00:26:19,490 --> 00:26:21,550 ορίσετε τον τύπο επιστροφής. 483 00:26:21,550 --> 00:26:23,940 Αλλά σε αυτή την περίπτωση, δεν το κάνω Πιστεύω ότι θα μπορούσε να λειτουργήσει. 484 00:26:23,940 --> 00:26:26,190 Υπάρχει κάποια άλλη σύνταξη ότι θα δούμε αργότερα. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Εντάξει, έτσι ώστε αυτή η πηγή κώδικας είναι λίγο διαφορετικό 487 00:26:35,280 --> 00:26:41,839 διότι αυτό αναλύει τα επιχειρήματα από η λειτουργία που μας καλείς. 488 00:26:41,839 --> 00:26:44,130 Επιτρέψτε μου να σας δείξει πώς λειτουργεί πριν προχωρήσουμε στην πραγματικότητα 489 00:26:44,130 --> 00:26:48,050 σε ορισμένα ενδιαφέροντα πράγματα ότι συμβαίνει στο Swift. 490 00:26:48,050 --> 00:26:51,870 >> Έτσι, σε αυτή την περίπτωση, αν τρέχω μόνο αυτό κώδικα, παρατηρούμε ότι αυτό που κάνει 491 00:26:51,870 --> 00:26:54,900 is-- ενώ, το είδος του Μου δίνει ένα περίεργο σφάλμα. 492 00:26:54,900 --> 00:26:59,730 Θα πρέπει να περάσει ένα ζευγάρι των ακέραιοι ως όρισμα γραμμής εντολών. 493 00:26:59,730 --> 00:27:06,220 Ας δούμε λοιπόν, 150 και 80, και πατήστε enter για να μάθετε τι είναι πραγματικά κάνει. 494 00:27:06,220 --> 00:27:09,890 Είναι αποδοχή κάθε μία από Οι τιμές αυτές καθώς ακέραιοι. 495 00:27:09,890 --> 00:27:12,040 Είναι αυτά εισαγωγή σε ένα Βαθμολόγιο. 496 00:27:12,040 --> 00:27:14,470 Και τότε είναι που εκτελεί ότι η μέση υπολογισμό 497 00:27:14,470 --> 00:27:16,650 και την έξοδο που όπως θα περιμέναμε. 498 00:27:16,650 --> 00:27:19,950 >> Αλλά προφανώς υπάρχει κάτι που συμβαίνει σχετικά με την απόρριψη αυτή κάτι 499 00:27:19,950 --> 00:27:23,300 κάτι σαν ακέραιος. 500 00:27:23,300 --> 00:27:27,300 Όπως ίσως θυμάστε από όταν ήμασταν που ασχολούνται με επιχειρήματα της γραμμής εντολών 501 00:27:27,300 --> 00:27:32,640 σε C και σε άλλες γλώσσες, η πρώτη 0-ου στοιχείο σε αυτό το επιχείρημα της γραμμής εντολών 502 00:27:32,640 --> 00:27:35,774 λίστα είναι το όνομα της εντολής ότι πράγματι εκτελεστεί. 503 00:27:35,774 --> 00:27:38,690 Έτσι, σε αυτή την περίπτωση, είμαι απλώς looping πάνω από όλα τα επιχειρήματα της γραμμής εντολών. 504 00:27:38,690 --> 00:27:41,650 Αλλά εγώ δεν κάνω οποιοδήποτε είδος της φαντασίας ελέγξτε για να προσπεράσει τη πρώτη. 505 00:27:41,650 --> 00:27:45,920 Είμαι απλά ρητά ή σιωπηρά είμαι τον έλεγχο της οποίας αυτών των τύπων 506 00:27:45,920 --> 00:27:49,900 είναι ακέραιοι πριν εγώ πραγματικά εκτελέσει ο υπολογισμός αυτός. 507 00:27:49,900 --> 00:27:52,420 >> Και αυτό είναι, κατ 'ουσίαν τι συμβαίνει εδώ. 508 00:27:52,420 --> 00:27:55,860 Για κάθε επιχείρημα τα επιχειρήματα της διαδικασίας του, 509 00:27:55,860 --> 00:27:59,210 Πάω να εκτελέσει κάποια επιταγή. 510 00:27:59,210 --> 00:28:01,970 Και σε αυτή την περίπτωση, θα πάω να προσπαθήσει να μετατρέψει πρώτα 511 00:28:01,970 --> 00:28:07,620 το επιχείρημα αυτό σε έναν ακέραιο αριθμό από εκτελεί μια ρητή typecast, 512 00:28:07,620 --> 00:28:12,310 γιατί είναι, στην είσοδο, ένα string και όχι στην πραγματικότητα ένας ακέραιος. 513 00:28:12,310 --> 00:28:18,140 >> Αλλά αυτό είναι το είδος της μια περίεργη σύνταξη, αν αφήσουμε βαθμού ισούται Int (επιχείρημα). 514 00:28:18,140 --> 00:28:21,120 Τι συμβαίνει στην πραγματικότητα εδώ είναι εξαιρετικά 515 00:28:21,120 --> 00:28:24,390 σημαντικό να χρησιμοποιείτε Swift σας. 516 00:28:24,390 --> 00:28:27,610 Αυτό χρησιμοποιεί ό, τι είναι ονομάζεται ένα προαιρετικό τύπου. 517 00:28:27,610 --> 00:28:34,790 >> Έτσι, αυτή η λειτουργία, Int (επιχείρημα), επιστρέφει όχι μόνο έναν ακέραιο, αλλά επιστρέφει 518 00:28:34,790 --> 00:28:37,470 αυτό που ονομάζεται μια προαιρετική ακέραιο. 519 00:28:37,470 --> 00:28:41,200 Και έτσι αυτό είναι το είδος του ένας τύπος στην κορυφή ενός τύπου. 520 00:28:41,200 --> 00:28:45,900 Μπορείτε να ταξινομήσετε από το φανταστείτε σαν αυτό είναι που επιστρέφουν σαν ένα πακέτο. 521 00:28:45,900 --> 00:28:47,750 Και όταν ανοίγετε ότι συσκευασίας, είτε 522 00:28:47,750 --> 00:28:53,930 έχει ένα ακέραιο, η οποία είναι το αποτέλεσμα, ή δεν έχει απολύτως τίποτα σε αυτό καθόλου. 523 00:28:53,930 --> 00:28:58,140 Και αυτό είναι χρήσιμο ως έλεγχο σφαλμάτων μηχανισμός, διότι στην περίπτωση αυτή 524 00:28:58,140 --> 00:29:02,080 μπορούμε να ανακαλύψουμε, ήταν αυτό μετατροπή επιτυχημένο είδος; 525 00:29:02,080 --> 00:29:05,810 Αν ήταν, τότε είναι στην πραγματικότητα πρόκειται να έχουν έναν ακέραιο στο εσωτερικό. 526 00:29:05,810 --> 00:29:08,750 Διαφορετικά πρόκειται να έχουν κάποια αξία που θα καλέσουμε μηδέν, η οποία 527 00:29:08,750 --> 00:29:10,920 είναι αντιπροσωπευτική καμία ακέραιος καθόλου. 528 00:29:10,920 --> 00:29:13,270 Είναι πραγματικά εκπρόσωπος του τίποτα. 529 00:29:13,270 --> 00:29:18,130 >> Και έτσι αυτό εάν ο τρόπος κατασκευής μας επιτρέπει να ξεδιπλώνω αυτό το πακέτο, 530 00:29:18,130 --> 00:29:19,850 ότι οι εναλλακτικές δυνατότητες σύνδεσης. 531 00:29:19,850 --> 00:29:25,560 Και αν είμαστε σε θέση να ξεδιπλώνω ότι συσκευάζουν και να βρει έναν ακέραιο στο εσωτερικό, 532 00:29:25,560 --> 00:29:27,720 τότε αυτό που λέμε εδώ είναι ότι στη συνέχεια θα 533 00:29:27,720 --> 00:29:33,090 επιτρέπουν η αξία αυτή να θέσει σε Αυτή η συνεχής ονομάζεται βαθμού. 534 00:29:33,090 --> 00:29:36,590 Και αυτό το τμήμα της εντολής if, το άνω τμήμα της εντολής if 535 00:29:36,590 --> 00:29:40,390 θα τρέξει, γιατί αυτό ξετυλίξετε ήταν επιτυχής. 536 00:29:40,390 --> 00:29:43,290 >> Εάν είναι ακριβώς έτσι συμβαίνει ότι υπήρξε ένα λάθος, ίσως 537 00:29:43,290 --> 00:29:47,040 σε αυτό το ρητό μετατροπής τύπου από μια σειρά σε ακέραιο, ίσως 538 00:29:47,040 --> 00:29:49,160 είναι η τιμή του ABC για παράδειγμα. 539 00:29:49,160 --> 00:29:52,120 Και αυτό είναι στην πραγματικότητα δεν πρόκειται για τη μετατροπή σε ακέραιο. 540 00:29:52,120 --> 00:29:55,520 Στη συνέχεια θα επιστρέψει μηδέν, η οποία δεν είναι ένας ακέραιος. 541 00:29:55,520 --> 00:29:57,570 Και αυτή η δήλωση, αν και στη συνέχεια να αποτύχει. 542 00:29:57,570 --> 00:30:01,930 βαθμός αυτός δεν θα υπάρχει γιατί δεν έχει περιεχόμενο ακέραιος. 543 00:30:01,930 --> 00:30:06,391 Και θα τρέχει αυτό το μπλοκ άλλο αντ 'αυτού. 544 00:30:06,391 --> 00:30:06,890 Ναί? 545 00:30:06,890 --> 00:30:09,652 >> Κοινό: Μηδέν είναι Ν-Ι-L; 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: μηδέν είναι Ν-Ι-Ε, ναι. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Έτσι, αυτό είναι ίσως ένα από τα δυσκολότερα πράγματα για Swift, 549 00:30:20,310 --> 00:30:23,690 ειδικά όταν είστε σε τα ζιζάνια σε μια iOS app 550 00:30:23,690 --> 00:30:27,442 και είστε πραγματικά προσπαθούν να κάνει κάποια εξέλιξη εκεί. 551 00:30:27,442 --> 00:30:29,400 Είναι πρόκειται να φωνάζει σε σας για προαιρετικό. 552 00:30:29,400 --> 00:30:33,050 Δεν πρόκειται να σας ζητήσει ερωτηματικά και θαυμαστικά. 553 00:30:33,050 --> 00:30:37,100 Αλλά από τη στιγμή που θα καταλάβω αν out-- αφιερώσουν κάποιο χρόνο για την εξεύρεση 554 00:30:37,100 --> 00:30:41,990 τι συμβαίνει με τους τύπους προαιρετικών, θα σώσει τον εαυτό σας πολύ πονοκέφαλο 555 00:30:41,990 --> 00:30:46,040 καθώς προσπαθείτε να γράψει μια εφαρμογή στο Swift. 556 00:30:46,040 --> 00:30:47,660 >> Είναι πραγματικά ένα πολύ ισχυρό χαρακτηριστικό. 557 00:30:47,660 --> 00:30:49,826 Και θα πρέπει ακριβώς να πάρτε τη λέξη μου για αυτό προς το παρόν. 558 00:30:49,826 --> 00:30:52,620 Αλλά θα δούμε αυτή την κατασκευή και κάποιοι άλλοι αρέσει 559 00:30:52,620 --> 00:30:56,740 σε ορισμένα από τα άλλα τον πηγαίο κώδικα που θα σας δείξουμε ακριβώς σε ένα μικρό κομμάτι. 560 00:30:56,740 --> 00:31:00,440 >> Υπάρχουν αρχικές ερωτήσεις εδώ; 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Έτσι, το σημαντικό πακέτο είναι ότι ένα προαιρετικά τύπος είναι ένα είδος metatype. 563 00:31:08,690 --> 00:31:12,500 Είναι είτε έχει μια τιμή, και αν ναι, τότε 564 00:31:12,500 --> 00:31:18,110 Θα έχετε ίσως την αξία αυτή συνδέεται με αυτό, ή δεν έχει καμία απολύτως αξία, 565 00:31:18,110 --> 00:31:19,620 και εκπροσωπείται από το μηδέν. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Το υπόλοιπο αυτό είναι ίσως όπως θα περίμενε κανείς. 568 00:31:28,870 --> 00:31:32,900 >> Ας ράμπα μέχρι το δυσκολία ακόμη φορά. 569 00:31:32,900 --> 00:31:37,070 Και αυτή τη φορά, ας ρίξουμε μια ματιά σε μερικά άλλους τύπους δεδομένων που υπάρχουν πραγματικά. 570 00:31:37,070 --> 00:31:41,290 Ένας από αυτούς είναι λεξικά, η οποία είναι πολύ παρόμοια με την Python λεξικά. 571 00:31:41,290 --> 00:31:48,270 Είναι κάπως παρόμοιο με ένα πίνακα κατακερματισμού σε C. Είναι ουσιαστικά μια χαρτογράφηση των κλειδιών 572 00:31:48,270 --> 00:31:49,820 όπου τα κλειδιά μπορεί να είναι χορδές. 573 00:31:49,820 --> 00:31:52,670 Και όταν κοιτάζω προς τα πάνω τα κλειδιά, αυτά τα κλειδιά θα έχουν αξία. 574 00:31:52,670 --> 00:31:56,020 Έτσι δεν είναι αρκετά μια σειρά, αλλά Αντ 'αυτού, πιο στενά συνδεδεμένες 575 00:31:56,020 --> 00:31:58,810 σε ένα χάρτη κατακερματισμού ή ένα πίνακα κατακερματισμού. 576 00:31:58,810 --> 00:32:02,420 >> Ας δούμε πώς αυτό υποτίθεται να εργάζονται πριν πραγματικότητα 577 00:32:02,420 --> 00:32:05,210 πηγαίνετε στο ίδιο πηγαίο κώδικα. 578 00:32:05,210 --> 00:32:07,680 Αν τρέχω μόνο αυτό, δεν συμβαίνει τίποτα πραγματικά. 579 00:32:07,680 --> 00:32:12,430 Είναι μου λέει ότι Περιμένω ορισμένες παράμετροι του ακόλουθου τύπου. 580 00:32:12,430 --> 00:32:16,050 Έτσι, Πάω να παρέχει στους ότι ορισμένοι πρόβλημα που τα ονόματα, 581 00:32:16,050 --> 00:32:18,490 έτσι pset0, ίσως πήρα 100. 582 00:32:18,490 --> 00:32:20,790 Και pset1, πήρα ένα 5. 583 00:32:20,790 --> 00:32:24,630 Και στη συνέχεια για τις εξετάσεις, θα έκανε πολύ καλά και πήρε 30. 584 00:32:24,630 --> 00:32:27,180 Και ουπς, χτύπησα ένα χώρο εδώ. 585 00:32:27,180 --> 00:32:30,940 >> Όταν πατήσετε το Enter, μπορείτε να δείτε εκτελεί κάποια υπολογισμό. 586 00:32:30,940 --> 00:32:33,740 Λέει Βαθμολόγιο είναι τρεις τάξεων, pset1, pset0, εξετάσεις. 587 00:32:33,740 --> 00:32:36,120 Και βαθμολόγιο έχει αυτό το συγκεκριμένο μέσο. 588 00:32:36,120 --> 00:32:38,370 Έτσι και πάλι, δουλεύουμε με αυτό το βαθμολόγιο ιδέα, 589 00:32:38,370 --> 00:32:44,650 αλλά θα πάμε να συνεχίσουμε την επανάληψη με την πολυπλοκότητα της λειτουργίας μας. 590 00:32:44,650 --> 00:32:47,650 >> Έτσι, κατά την έναρξη, είμαστε απλά πρόκειται να δημιουργήσει μια λειτουργία που 591 00:32:47,650 --> 00:32:49,390 είναι υπεύθυνη για την εκτύπωση του χρήση. 592 00:32:49,390 --> 00:32:51,920 Και υπάρχει αυτή η έξοδος λειτουργία η οποία θα είναι ακριβώς 593 00:32:51,920 --> 00:32:53,710 βίαια τερματίσετε την εφαρμογή. 594 00:32:53,710 --> 00:32:56,530 Αυτό δεν είναι κάτι που θα χρησιμοποιήσετε στο iOS app. 595 00:32:56,530 --> 00:32:59,750 Αυτό είναι μόνο, στην περίπτωση αυτή, με το επιχείρημα της γραμμής εντολών. 596 00:32:59,750 --> 00:33:01,990 Στη συνέχεια θα αρχίσει να κινείται προς την κατεύθυνση Xcode. 597 00:33:01,990 --> 00:33:07,760 Αλλά αυτό είναι ειδικά για μια εντολή line πρόγραμμα στυλ σε Swift. 598 00:33:07,760 --> 00:33:11,490 >> Ας ρίξουμε μια ματιά σε μερικά από τα τα ενδιαφέροντα πράγματα εδώ. 599 00:33:11,490 --> 00:33:15,150 Ας δούμε, μόνο ένα ζευγάρι των ενδιαφέροντα πράγματα να αναφέρω ίσως 600 00:33:15,150 --> 00:33:19,930 είναι ότι η λειτουργία μου εκτύπωση του αριθμού των βαθμών, 601 00:33:19,930 --> 00:33:26,090 Θα θυμάστε ίσως ότι είχα τον εν λόγω κατάλογο της items-- pset1, pset0, και εξετάσεις. 602 00:33:26,090 --> 00:33:29,130 Μπορείτε πραγματικά γρήγορα και εύκολα να το κάνετε αυτό 603 00:33:29,130 --> 00:33:34,490 με τη λήψη του βαθμολόγιο, η οποία είναι μια λεξικό που έχει τα κλειδιά και αξίες. 604 00:33:34,490 --> 00:33:38,730 Βρείτε όλα τα βασικά είναι μέσω η μέθοδος κλειδιά τελεία εδώ, 605 00:33:38,730 --> 00:33:43,180 και στη συνέχεια να χρησιμοποιήσετε αυτό το joinWithSeparator, τα οποία στη συνέχεια θα λάβει όλα τα κλειδιά 606 00:33:43,180 --> 00:33:48,590 ότι είχαμε πληκτρολογήσει, pset1-- ή Συγγνώμη, pset0, pset1, και exam-- 607 00:33:48,590 --> 00:33:53,030 και να τους ενώσετε μαζί χρησιμοποιώντας ένα κόμμα και ένα κενό διάστημα 608 00:33:53,030 --> 00:33:55,400 για να δημιουργήσετε ένα μακρύ κορδόνι. 609 00:33:55,400 --> 00:34:00,190 Αυτή η πράξη συνένωσης είναι μόνο φαινομενικά χρήσιμη σε μια ποικιλία από περιβάλλοντα. 610 00:34:00,190 --> 00:34:03,450 Και έτσι είναι αυτό joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> Και αυτό είναι ένα πράγμα που είναι αλλάξει από 1 έως Swift Swift 2. 612 00:34:06,939 --> 00:34:08,730 Εκεί που χρησιμοποιούνται να είναι μια Python style-- αν είστε 613 00:34:08,730 --> 00:34:13,219 εξοικειωμένοι με Python-- ένα Python στυλ ενταχθούν μέθοδο στις χορδές. 614 00:34:13,219 --> 00:34:15,699 Αλλά αυτό δεν είναι πλέον στην περίπτωση του Swift 2. 615 00:34:15,699 --> 00:34:19,400 Θέλετε να χρησιμοποιήσετε αυτό αν θέλετε για να ενώσετε μια σειρά από πράγματα 616 00:34:19,400 --> 00:34:23,380 μαζί με μια σειρά. 617 00:34:23,380 --> 00:34:27,889 >> Έτσι, ίσως τότε σε μας συζήτηση του μέσου όρου πριν, 618 00:34:27,889 --> 00:34:32,659 κάνει λίγο περισσότερο νόημα για να θέσουμε το μέσο λειτουργίας 619 00:34:32,659 --> 00:34:36,610 να είναι ένα προαιρετικό διπλό μάλλον από απλώς μια ρητή διπλό. 620 00:34:36,610 --> 00:34:39,239 Επειδή είχαμε ότι ασυνήθιστη κατάσταση όπου, 621 00:34:39,239 --> 00:34:41,550 Τι κι αν στην πραγματικότητα Βαθμολόγιο δεν έχει τιμές μέσα σε αυτό; 622 00:34:41,550 --> 00:34:44,280 Τι θα πρέπει η μέση απόδοση; 623 00:34:44,280 --> 00:34:46,350 >> Καλά ίσως σε C σας θα έχουμε κάνει κάτι 624 00:34:46,350 --> 00:34:50,040 όπως προβλέπεται μια αξία δεικτών, όπως 0.0, ή ίσως ένας αρνητικός αριθμός, 625 00:34:50,040 --> 00:34:53,690 ή απλά κάτι που εκπροσωπούν το γεγονός ότι υπήρχε κάποια κατάσταση σφάλματος 626 00:34:53,690 --> 00:34:57,910 και ίσως δεν έχουν πραγματικά η δυνατότητα να υπολογίσει το μέσο όρο. 627 00:34:57,910 --> 00:35:05,590 Λοιπόν η ομορφιά του προσδιορισμού προαιρετικού τύπου θα ήταν να το κάνουμε αυτό. 628 00:35:05,590 --> 00:35:09,540 Και είμαι τώρα λένε όλα αυτά τα λόγια, αλλά Αυτή η πραγματικότητα δεν χρησιμοποιεί optionals. 629 00:35:09,540 --> 00:35:12,970 Αλλά θα δούμε ότι σε μόλις λεπτά, όπου μπορούμε να καθορίσουμε κατά μέσο όρο 630 00:35:12,970 --> 00:35:17,230 να είναι ένα προαιρετικό τύπο δεδομένων, έτσι ώστε αν επιστρέφει πράγματι κάποια δεδομένα, τότε 631 00:35:17,230 --> 00:35:18,470 θα επιστρέψουμε τα δεδομένα. 632 00:35:18,470 --> 00:35:20,570 Διαφορετικά, θα επιστρέψουμε μηδέν, λέγοντας ότι αυτή η 633 00:35:20,570 --> 00:35:22,200 δεν έχει νόημα υπολογισμού. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Ας περάσουμε σε κάτι άλλο. 636 00:35:28,570 --> 00:35:35,910 Έτσι, από εδώ, έχουμε κοιτούσατε Όλα αυτά τα παραδείγματα στη γραμμή εντολών. 637 00:35:35,910 --> 00:35:39,470 Αλλά πραγματικά τι πρόκειται να ασχολούνται με είναι Xcode. 638 00:35:39,470 --> 00:35:43,720 Και ένα από τα ωραία πράγματα για Xcode είναι, και συγκεκριμένα στην Swift, 639 00:35:43,720 --> 00:35:47,450 είναι ότι έχουμε αυτό πράγμα που ονομάζεται μια χαρά. 640 00:35:47,450 --> 00:35:51,470 Και μια χαρά είναι δεν είναι καθόλου μια iOS app. 641 00:35:51,470 --> 00:35:54,751 Αλλά σας επιτρέπει να πειραματιστείτε με Swift με έναν πολύ εύκολο τρόπο. 642 00:35:54,751 --> 00:35:56,000 Μπορείτε να πληκτρολογήσετε το σύνολο των κωδικό σας. 643 00:35:56,000 --> 00:35:58,140 Είναι όμορφα Σύνταξη επισημανθεί εδώ. 644 00:35:58,140 --> 00:36:01,600 Όταν δημιουργείτε ένα νέο αρχείο, θα ζητήσει σας εάν θέλετε να δημιουργήσετε μια χαρά. 645 00:36:01,600 --> 00:36:08,720 Αλλά το ωραίο πράγμα σχετικά με την παιδική χαρά είναι ότι στα δεξιά του παραθύρου σας, 646 00:36:08,720 --> 00:36:12,020 δεν θα σας δείξει πραγματικά εξόδου από τον κώδικά σας. 647 00:36:12,020 --> 00:36:16,110 Έτσι, αν μετακινηθείτε προς τα κάτω, μπορούμε να δούμε τι η έξοδος από διάφορες γραμμές κώδικα 648 00:36:16,110 --> 00:36:17,200 στην πραγματικότητα συμβαίνει να είναι. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Έτσι, σε αυτή την περίπτωση, θα πάμε να αλλάξετε τις κατευθύνσεις μόνο ένα μικρό κομμάτι 651 00:36:26,790 --> 00:36:30,960 και να μιλήσουμε για κάτι που είναι πραγματικά σημαντικό σε αυτό το υψηλό επίπεδο τον τρόπο 652 00:36:30,960 --> 00:36:34,020 ότι Swift λειτουργεί, και Είναι αυτή η ιδέα του κλεισίματος. 653 00:36:34,020 --> 00:36:36,960 Και πιθανώς έχετε δει αυτό λίγο σε JavaScript. 654 00:36:36,960 --> 00:36:40,770 Για όσους από εσάς είναι σε CS50, κλείσιμο 655 00:36:40,770 --> 00:36:47,240 είναι πολύ δημοφιλή, πολύ καλός τρόπος για να γίνει υψηλό επίπεδο τα πράγματα στις σύγχρονες γλώσσες. 656 00:36:47,240 --> 00:36:50,270 Αλλά είναι επίσης και το είδος του είναι δύσκολο να τυλίξτε το κεφάλι σας γύρω από την πρώτη φορά. 657 00:36:50,270 --> 00:36:52,269 Έτσι, αν ψάχνετε σε αυτό για πρώτη φορά, ότι είναι εντάξει. 658 00:36:52,269 --> 00:36:56,740 Αρκεί να δει κανείς τον πηγαίο κώδικα και να δούμε αν μπορείτε να το καταλάβω στο σπίτι. 659 00:36:56,740 --> 00:37:01,050 >> Έτσι, σε αυτή την περίπτωση, ας πούμε ότι εμείς θέλετε να δημιουργήσετε ένα πολύ εκθετών 660 00:37:01,050 --> 00:37:04,134 με κάποια σταθερή τιμή. 661 00:37:04,134 --> 00:37:05,800 Έτσι, σε αυτή την περίπτωση μπορεί να δημιουργήσει μια λειτουργία. 662 00:37:05,800 --> 00:37:09,270 Πάω να το ονομάσουμε εξουσία 2, των οποίων μοναδικός σκοπός της ζωής 663 00:37:09,270 --> 00:37:15,770 είναι να πάρει κάποιο εισόδου και διπλό αυτό, και να επιστρέψει την τιμή αυτή. 664 00:37:15,770 --> 00:37:21,210 Παρατηρήστε ότι εδώ είμαι αποδοχή ενός τύπου δεδομένων. 665 00:37:21,210 --> 00:37:23,137 Είναι πρόκειται να είναι μια μεταβλητή που ονομάζεται Χ. 666 00:37:23,137 --> 00:37:23,970 Είναι τύπου double. 667 00:37:23,970 --> 00:37:26,190 Και Πάω να επιστρέψει ένα διπλό εδώ. 668 00:37:26,190 --> 00:37:29,100 Και είμαι απλώς πρόκειται να κάνει ένα πολύ, ειλικρινά, αρκετά 669 00:37:29,100 --> 00:37:32,650 αφελής τρόπος για διπλασιασμό της τιμής αυτής. 670 00:37:32,650 --> 00:37:35,600 Και θα σας δείξω αυτό γιατί είναι χρήσιμο σε μόλις ένα δευτερόλεπτο. 671 00:37:35,600 --> 00:37:40,418 >> Παρατηρήστε ότι εδώ έχουμε αυτό το φάσμα πάλι. για κάτι στο 1, τελεία 672 00:37:40,418 --> 00:37:44,130 dot dot, 2, πράγμα που σημαίνει ότι Αυτός ο βρόχος θα εκτελεστεί δύο φορές. 673 00:37:44,130 --> 00:37:46,480 Αλλά αυτό αντιπροσωπεύει μια ψευδομεταβλητή. 674 00:37:46,480 --> 00:37:49,650 Αυτό σημαίνει ότι δεν είμαι πραγματικά πρόκειται να να χρησιμοποιούν αυτήν τη μεταβλητή οπουδήποτε 675 00:37:49,650 --> 00:37:51,070 εσωτερικό αυτού του βρόχου. 676 00:37:51,070 --> 00:37:55,380 Θέλω μόνο αυτή τη γραμμή κώδικα για να τρέξει δύο φορές, 677 00:37:55,380 --> 00:37:58,980 χωρίς να χρειάζεται να γνωρίζετε η αξία της εν λόγω σειράς. 678 00:37:58,980 --> 00:38:02,570 >> Έτσι, σε αυτή την περίπτωση Τρέχω αποτέλεσμα φορές x δύο φορές, το οποίο κατ 'ουσίαν 679 00:38:02,570 --> 00:38:06,560 σημαίνει ότι είμαι τετραγωνισμό αυτήν την τιμή. 680 00:38:06,560 --> 00:38:10,230 Και αυτό συμβαίνει σε λειτουργούν όπως θα περιμέναμε. 681 00:38:10,230 --> 00:38:16,410 Δύναμη του 2, περνώντας την τιμή 2.0 μας δίνει μια έξοδο 4. 682 00:38:16,410 --> 00:38:18,810 3.2 εργασίες για 10.24. 683 00:38:18,810 --> 00:38:22,660 >> Τώρα μπορούμε να κάνουμε μια παρόμοια πράγμα για την εξουσία του 3. 684 00:38:22,660 --> 00:38:25,330 Αλλά τώρα αλλάξει μόνο την περιοχή. 685 00:38:25,330 --> 00:38:28,840 Για ψευδομεταβλητή σε 1 έως 3, πολλαπλασιάστε 3 φορές, 686 00:38:28,840 --> 00:38:29,830 και να κάνει το ίδιο πράγμα. 687 00:38:29,830 --> 00:38:32,240 >> Έτσι, αυτό μπορεί να αισθάνεται λίγο σκηνοθετημένη. 688 00:38:32,240 --> 00:38:34,270 Αλλά υπάρχει μια σημαντική πράγμα το οποίο εδώ 689 00:38:34,270 --> 00:38:37,770 είναι ότι κοιτάζοντας αυτά δύο λειτουργίες, υπάρχει 690 00:38:37,770 --> 00:38:43,600 μόνο ένα πράγμα που είναι διαφορετικό, η οποία είναι αυτή η τιμή στην περιοχή. 691 00:38:43,600 --> 00:38:46,910 Όλα τα άλλα σχετικά με αυτά τα δύο λειτουργίες, ισχύς 3 και δύναμη του 2, 692 00:38:46,910 --> 00:38:50,440 είναι, στην πραγματικότητα, επειδή ταυτόσημα εργάζονται με τον ίδιο τρόπο. 693 00:38:50,440 --> 00:38:53,460 >> Έτσι, σε αυτό το σημείο, λίγο κώδωνα του κινδύνου θα πρέπει να πηγαίνει μακριά. 694 00:38:53,460 --> 00:38:56,200 Ας ελπίσουμε ότι αυτό που λέτε, Ξέρετε, αυτό αισθάνεται λίγο 695 00:38:56,200 --> 00:38:59,250 όπως η διπλή προσπάθεια. 696 00:38:59,250 --> 00:39:02,950 Ίσως υπάρχει ένας τρόπος που θα να είναι σε θέση να ενσωματώσουν όλα αυτά 697 00:39:02,950 --> 00:39:06,630 και να παρέχει μια λειτουργία ή να δημιουργήσετε μια λειτουργία που 698 00:39:06,630 --> 00:39:11,550 κάνει ακριβώς ό, τι θέλετε χωρίς να χρειάζεται να πληκτρολογήσετε ρητά. 699 00:39:11,550 --> 00:39:15,732 Και αυτό είναι ό, τι η δύναμη του κλεισίματος μας επιτρέπει να κάνουμε. 700 00:39:15,732 --> 00:39:16,940 Έτσι, ας ρίξουμε μια ματιά σε αυτό. 701 00:39:16,940 --> 00:39:18,700 Και εγώ θα περάσουν μερικά λεπτά σε αυτό, διότι αυτό 702 00:39:18,700 --> 00:39:20,310 Είναι πολύ σημαντικό για Swift. 703 00:39:20,310 --> 00:39:22,900 Βλέπουμε αυτό όλη την ώρα. 704 00:39:22,900 --> 00:39:24,550 Εμείς πάμε για να ορίσουμε μια συνάρτηση. 705 00:39:24,550 --> 00:39:26,380 Είναι πρόκειται να κληθεί powerOf. 706 00:39:26,380 --> 00:39:29,470 Είναι πρόκειται να δεχτεί ένα παράμετρο που ονομάζεται y του τύπου Int. 707 00:39:29,470 --> 00:39:32,220 Αλλά ρίξτε μια ματιά στο είδος επιστροφής. 708 00:39:32,220 --> 00:39:38,730 Ο τύπος επιστροφής είναι, σε παρενθέσεις, διπλό βέλος διπλό. 709 00:39:38,730 --> 00:39:43,370 Πράγμα που σημαίνει ότι αυτή τη λειτουργία, Αυτό powerOf λειτουργία, 710 00:39:43,370 --> 00:39:46,550 επιστρέφει μια λειτουργία. 711 00:39:46,550 --> 00:39:50,845 Αυτό είναι ένα διπλό αποδοχή και επιστρέφουν ένα διπλό. 712 00:39:50,845 --> 00:39:53,720 Έτσι ώστε να μπορεί να ακούγεται είδος της τρελό, αλλά ας μετακινηθείτε προς τα κάτω λίγο 713 00:39:53,720 --> 00:39:55,060 και να κοιτάξουμε να δούμε τι θα συμβεί. 714 00:39:55,060 --> 00:39:57,910 Είμαστε εσωτερικό αυτού του powerOf λειτουργία. 715 00:39:57,910 --> 00:40:00,760 Είμαστε δημιουργώντας μια νέα λειτουργία καλείται εκθετικός, 716 00:40:00,760 --> 00:40:02,900 αλλά δεν έχει σημασία τι είναι. 717 00:40:02,900 --> 00:40:06,410 >> Παρατηρήστε ότι αυτό έχει η τιμή εισόδου x. 718 00:40:06,410 --> 00:40:09,910 Και παίρνει σε δίκλινο και επιστρέφουν ένα διπλό. 719 00:40:09,910 --> 00:40:16,320 Και αυτό είναι το ίδιο κώδικα που είδαμε παραπάνω, εκτός από το ότι η τιμή των 2 720 00:40:16,320 --> 00:40:20,060 ή η αξία του 3, ότι άνω όριο σε αυτή την περιοχή, 721 00:40:20,060 --> 00:40:23,210 έχει αντικατασταθεί με Αυτή η τιμή του y, το οποίο 722 00:40:23,210 --> 00:40:27,230 ήταν η αρχική παράμετρο της λειτουργίας powerOf μας. 723 00:40:27,230 --> 00:40:31,700 Και σε αυτό το σημείο, επιστρέψει εκθετικός. 724 00:40:31,700 --> 00:40:33,345 Είμαστε επιστρέφοντας τη λειτουργία. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Είναι κάτι σαν ένα μικρό μυαλό ανατίναξη. 727 00:40:39,550 --> 00:40:44,360 Αλλά ας φανταστούμε τι θα συμβεί όταν καλώ αυτή τη λειτουργία powerOf 728 00:40:44,360 --> 00:40:47,610 και να περάσει σε αυτό κάποια αξία σαν 2. 729 00:40:47,610 --> 00:40:50,020 Τι αυτό σημαίνει είναι ότι Τώρα έχω την τιμή 730 00:40:50,020 --> 00:40:55,130 2 για y, το οποίο σημαίνει ότι αυτή η αξία y σε αυτή τη λειτουργία εκθετικός 731 00:40:55,130 --> 00:40:56,410 θα είναι η τιμή 2. 732 00:40:56,410 --> 00:41:01,290 Είμαι, όμως, αυτό που επιστρέφουν λειτουργία εκθετικός. 733 00:41:01,290 --> 00:41:05,900 >> Έτσι προσέχει τι λέει Swift μου έχουν δημιουργήσει σε αυτή την περίπτωση. 734 00:41:05,900 --> 00:41:10,550 ας πλατεία είναι ένας ορισμός, είναι μια συνάρτηση που δέχεται ένα διπλό 735 00:41:10,550 --> 00:41:12,610 και επιστρέφει ένα διπλό. 736 00:41:12,610 --> 00:41:16,590 Έχω δημιουργήσει μια λειτουργία ότι κάτι πλατείες 737 00:41:16,590 --> 00:41:19,782 με αυτό το μηχανισμό εδώ. 738 00:41:19,782 --> 00:41:22,490 Και πραγματικά αυτό που συμβαίνει είναι ότι επιστρέφει αυτή τη λειτουργία 739 00:41:22,490 --> 00:41:26,390 εκθετικός, αλλά αυτή η τιμή y είναι τυλιγμένο στο εσωτερικό του. 740 00:41:26,390 --> 00:41:31,080 Και έτσι τώρα κάθε φορά που μπορώ να χρησιμοποιήσω αυτό το μεταβλητής ή σταθερής αυτό που ονομάζεται 741 00:41:31,080 --> 00:41:35,180 πλατεία, είναι ότι πρόκειται να συμπεριφέρονται ως μια συνάρτηση. 742 00:41:35,180 --> 00:41:39,960 Και γι 'αυτό μπορεί στη συνέχεια να καλέσετε αυτή τη μεταβλητή όπως εγώ θα αποκαλούσα μια λειτουργία, 743 00:41:39,960 --> 00:41:43,830 και να περάσει σε αυτό έναν αριθμό, όπως στην προκειμένη περίπτωση 3. 744 00:41:43,830 --> 00:41:45,910 Και εγώ τότε θα τακτοποιήσει αυτή την τιμή. 745 00:41:45,910 --> 00:41:53,340 Έτσι 3 τετράγωνο τότε θα γίνει 9, όπως μπορούμε να δούμε εδώ. 746 00:41:53,340 --> 00:41:56,530 >> Πραγματικά τρελό, αλλά αυτό τώρα μου δίνει την ευκαιρία 747 00:41:56,530 --> 00:41:59,040 να δημιουργήσει άλλες λειτουργίες powerOf. 748 00:41:59,040 --> 00:42:03,680 Όπως μπορώ να πω, εντάξει, αλλά τώρα θέλω για να δημιουργήσετε μια νέα λειτουργία, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 και αποθηκεύστε σε αυτό για μια σταθερά που ονομάζεται κύβος. 750 00:42:06,290 --> 00:42:10,220 Και τώρα κύβος θα είναι μια ξεχωριστή λειτουργία που θα συνέχεια 751 00:42:10,220 --> 00:42:14,800 να λάβει κάποια αξία ως πρώτη ύλη και ότι κύβος αξία, όπως μπορούμε να δούμε στην κάτω γραμμή 752 00:42:14,800 --> 00:42:16,420 εδώ. 753 00:42:16,420 --> 00:42:18,590 κύβος του 2 πρόκειται να οδηγήσει σε 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Ας ελπίσουμε ότι τα πράγματα πολύ πετυχημένος. 756 00:42:22,680 --> 00:42:25,920 Ποτέ δεν έχω δει αυτό πριν. 757 00:42:25,920 --> 00:42:29,990 Σας ενθαρρύνω να εξετάσει το κλείσιμο και να διερευνήσουν αυτό το λίγο περισσότερο. 758 00:42:29,990 --> 00:42:33,570 Είναι πραγματικά ισχυρή ουσία βλέπουμε πολλές σε JavaScript και μερικές άλλες γλώσσες. 759 00:42:33,570 --> 00:42:37,160 Είναι πραγματικά ζωτικής σημασίας για την κατανόηση APIs καθώς και 760 00:42:37,160 --> 00:42:38,620 ότι θα φτάσουμε σε μόλις ένα δευτερόλεπτο. 761 00:42:38,620 --> 00:42:39,456 Ναί? 762 00:42:39,456 --> 00:42:43,740 >> Κοινό: Όταν κάνετε powerOf (2), παρένθεση, και στη συνέχεια 763 00:42:43,740 --> 00:42:48,764 άλλο παρένθεση, ένα άλλο input-- είστε ουσιαστικά αντικαθιστά το τετράγωνο. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Οπότε ψάξε την τελευταία γραμμή εδώ. 765 00:42:50,930 --> 00:42:55,930 Είναι πραγματικά δυνατόν να εντελώς το κάνουμε αυτό αλυσιδωτή όπως προτείνατε. 766 00:42:55,930 --> 00:43:00,990 Έτσι powerOf (5) σημαίνει ότι θα πάμε να έχουν ένα εκθετικό όρο από 5 έως εδώ. 767 00:43:00,990 --> 00:43:04,160 Έτσι, αυτό είναι κατ 'ουσίαν πρόκειται να είναι η ίδιο πράγμα 4 στην πέμπτη δύναμη, 768 00:43:04,160 --> 00:43:07,200 γιατί έχουμε δημιουργήσει ένα exponentiating λειτουργούν για την πέμπτη δύναμη, 769 00:43:07,200 --> 00:43:09,920 και είμαστε περνώντας μέσα ότι η λειτουργία της τιμής 4. 770 00:43:09,920 --> 00:43:12,619 Και έχουμε αυτή την τιμή ότι περιμένουμε, 1024. 771 00:43:12,619 --> 00:43:14,785 Κοινό: Και δεν είναι ένας το όνομα, έτσι ώστε να διευκολύνει 772 00:43:14,785 --> 00:43:16,570 να διαβάσει, την πλατεία οτιδήποτε. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: Σωστά, ακριβώς. 774 00:43:17,903 --> 00:43:21,120 Έτσι, πριν το βάλετε μόνο σε ένα σταθερό σημείο αυτό, 775 00:43:21,120 --> 00:43:23,808 ότι είναι πιο εύκολο να χρησιμοποιούν αυτή την ονομασία. 776 00:43:23,808 --> 00:43:24,308 Ναί? 777 00:43:24,308 --> 00:43:26,942 >> ΚΟΙΝΟ: Στο πλαίσιο αυτό, powerOf, είναι μέρος 778 00:43:26,942 --> 00:43:30,774 της γλώσσας προγραμματισμού σε αντίθεση με τον τρόπο που 779 00:43:30,774 --> 00:43:33,952 σκεφτείτε powerOf σε [δεν ακούγεται]; 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: Λοιπόν Στην περίπτωση αυτή, powerOf 781 00:43:35,660 --> 00:43:39,280 είναι απλά το όνομα του συνάρτηση που ορίζεται εδώ. 782 00:43:39,280 --> 00:43:41,801 Έτσι δεν είναι εγγενείς στην ίδια τη γλώσσα, 783 00:43:41,801 --> 00:43:43,550 αλλά, αντίθετα, είναι ακριβώς μια λειτουργία που έχει 784 00:43:43,550 --> 00:43:45,628 αυτό το όνομα γιατί μου δώσει αυτό το όνομα. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Οποιεσδήποτε άλλες ερωτήσεις; 787 00:43:51,920 --> 00:43:52,800 Εντάξει. 788 00:43:52,800 --> 00:43:54,750 >> Τώρα αυτό είναι μεγάλη. 789 00:43:54,750 --> 00:43:58,170 Αλλά δεν πρόκειται να δείτε μια πολλές λειτουργίες κλεισίματος, η οποία 790 00:43:58,170 --> 00:44:03,440 είναι σαν αυτό, όπου μπορείτε να καθορίζουν, στο εσωτερικό από μια λειτουργία, μια άλλη λειτουργία. 791 00:44:03,440 --> 00:44:04,320 Και μπορείτε να το κάνετε. 792 00:44:04,320 --> 00:44:06,430 Αλλά δεν είναι το είδος του πραγματικά απαραίτητο, σωστά; 793 00:44:06,430 --> 00:44:09,189 Όπως και γιατί μπορώ να το ορίσει συνάρτηση που ονομάζεται εκθετικός 794 00:44:09,189 --> 00:44:10,480 και στη συνέχεια να επιστρέψει αμέσως. 795 00:44:10,480 --> 00:44:15,220 Γιατί δεν μπορώ απλά αμέσως να επιστρέψει αυτή η λειτουργία; 796 00:44:15,220 --> 00:44:18,890 >> Και στην πραγματικότητα, αυτό είναι ακριβώς η ιδέα πίσω από μια ιδέα που ονομάζεται 797 00:44:18,890 --> 00:44:22,410 ανώνυμες λειτουργίες, όπου ανώνυμες λειτουργίες δεν κάνει πραγματικότητα 798 00:44:22,410 --> 00:44:25,270 έχει ένα όνομα, επειδή Δεν χρειάζεται να έχετε ένα. 799 00:44:25,270 --> 00:44:28,700 Και στην προκειμένη περίπτωση, στην 7Β, μπορούμε να βρούμε ακριβώς αυτό. 800 00:44:28,700 --> 00:44:31,470 Είναι όλοι το ίδιο κωδικό, κάνει ακριβώς το ίδιο πράγμα, 801 00:44:31,470 --> 00:44:35,570 αλλά τώρα έχουμε αλλάξει ελαφρώς έτσι ότι αυτή η λειτουργία powerOf αμέσως 802 00:44:35,570 --> 00:44:37,750 επιστρέφει μια λειτουργία. 803 00:44:37,750 --> 00:44:44,150 Σημειώστε ότι μετά την επιστροφή, υπάρχει μια ανοιχτή σγουρά στήριγμα. 804 00:44:44,150 --> 00:44:46,410 Είναι αναμένει την είσοδο αυτή Double. 805 00:44:46,410 --> 00:44:48,560 Είναι αναμένει ότι η έξοδος διπλό. 806 00:44:48,560 --> 00:44:52,175 Και τότε η λέξη-κλειδί στο χωρίζει το ίδιο τον κώδικα. 807 00:44:52,175 --> 00:44:53,550 Έτσι, αυτό είναι μια ανώνυμη λειτουργία. 808 00:44:53,550 --> 00:44:57,030 Δεν έχει πραγματικά ένα όνομα, ενώ πριν ονομαζόταν εκθετικός. 809 00:44:57,030 --> 00:45:00,229 Αλλά, όπως είδαμε, ακριβώς πραγματικά δεν αναφέρονται σε εκθετικό 810 00:45:00,229 --> 00:45:01,270 εκτός αυτής της λειτουργίας. 811 00:45:01,270 --> 00:45:02,470 Γι 'αυτό δεν είχε σημασία. 812 00:45:02,470 --> 00:45:06,300 Έτσι, αυτό είναι ανώνυμη συνάρτηση λεγόμενη επειδή είναι ανώνυμος, 813 00:45:06,300 --> 00:45:09,107 αλλά είναι εξακολουθεί να χρησιμοποιείται στο πλαίσιο του κώδικα αυτού. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Τα επόμενα δύο αυτά είμαι πρόκειται να συνεχίσει ελπίζουμε 816 00:45:16,079 --> 00:45:17,370 φυσάει το μυαλό σας λίγο. 817 00:45:17,370 --> 00:45:20,410 Μπορούμε να απλοποιήσει αυτή ακόμη περισσότερο. 818 00:45:20,410 --> 00:45:24,490 Επειδή όπως ήταν έξυπνα επισημάνθηκε νωρίτερα, 819 00:45:24,490 --> 00:45:29,100 ίσως γνωρίζουμε ότι, από συνάγοντας από αυτό τον κωδικό, τι 820 00:45:29,100 --> 00:45:31,750 η έξοδος του κώδικα αυτού θα είναι. 821 00:45:31,750 --> 00:45:38,180 Και στην πραγματικότητα, σε αυτή την ανώνυμη συνάρτηση, στην πραγματικότητα, μπορούμε να συμπεράνουμε τα είδη των δεδομένων. 822 00:45:38,180 --> 00:45:41,650 >> Έτσι, σε αυτό το ένα, δεν είμαστε πλέον πρέπει να ορίσετε ρητά 823 00:45:41,650 --> 00:45:44,850 το είδος των δεδομένων που είναι να εισόδου και εξόδου από αυτήν τη λειτουργία 824 00:45:44,850 --> 00:45:45,890 για δυο λόγους. 825 00:45:45,890 --> 00:45:51,390 Το πρώτο είναι ότι έχουμε καθορίσει, επάνω στο πρωτότυπο της συνάρτησης που περικλείει, 826 00:45:51,390 --> 00:45:55,770 τι είδους δεδομένα ανώνυμες λειτουργία θα πρέπει εισόδου και εξόδου. 827 00:45:55,770 --> 00:45:57,900 Και από την άλλη, έχουμε μπορεί να συναχθεί από τον κώδικα 828 00:45:57,900 --> 00:46:01,930 εδώ κάτω που δεχόμαστε εισόδου που είναι τύπου double 829 00:46:01,930 --> 00:46:03,670 και επιστρέφουν ένα διπλό. 830 00:46:03,670 --> 00:46:07,890 >> Παρατηρήστε ότι εδώ δεν έχουμε ρητά ορίζονται τα ονόματα των επιχειρημάτων 831 00:46:07,890 --> 00:46:11,220 ότι αυτή η λειτουργία είναι η αποδοχή. 832 00:46:11,220 --> 00:46:16,180 Και έτσι βλέπουμε μπορούμε να αναφερθούμε οι παράμετροι αυτές χρησιμοποιώντας $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 ούτω καθεξής και ούτω καθεξής, ανάλογα με την ο αριθμός των εν λόγω παράμετρος που χρησιμοποιήθηκε 834 00:46:20,140 --> 00:46:20,850 σε αυτή τη λειτουργία. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> Αυτό είναι κάτι που θα έχετε την ευκαιρία για να δείτε πολλά είναι αυτή η ανοιχτή σγουρά στήριγμα 837 00:46:29,740 --> 00:46:32,797 ορισμός που ακολουθείται από ένα $ 0, και στη συνέχεια κάποιες λειτουργίας, 838 00:46:32,797 --> 00:46:34,130 και, στη συνέχεια, ένα κλειστό σγουρά στήριγμα. 839 00:46:34,130 --> 00:46:38,630 Αυτή είναι μια ανώνυμη συνάρτηση ότι εκτελεί αυτή τη λειτουργία. 840 00:46:38,630 --> 00:46:42,940 Έχει αυτήν την παράμετρο, όπου Είναι ο τύπος είναι συναχθεί. 841 00:46:42,940 --> 00:46:44,860 Αυτό πρώτη παράμετρος είναι $ 0. 842 00:46:44,860 --> 00:46:49,010 Και κάποια λειτουργία είναι συμβαίνει σε αυτό το $ 0. 843 00:46:49,010 --> 00:46:52,100 >> Κοινό: Έτσι, το σύμβολο του δολαρίου σημαίνει παράμετρος ουσιαστικά, 844 00:46:52,100 --> 00:46:53,429 και 0 σημαίνει την πρώτη; 845 00:46:53,429 --> 00:46:54,720 DAN Armendariz: Αυτό είναι σωστό. 846 00:46:54,720 --> 00:46:59,100 Έτσι, το σύμβολο του δολαρίου σημαίνει βασικά παράμετρος, και 0 σημαίνει την πρώτη. 847 00:46:59,100 --> 00:47:02,760 Αλλά λειτουργεί ειδικά στην Αυτή η περίπτωση κατά την οποία δεν έχω το όνομα 848 00:47:02,760 --> 00:47:07,940 τα επιχειρήματα ανώνυμα μου λειτουργία. 849 00:47:07,940 --> 00:47:11,119 >> Κοινό: Μήπως Perl ή κάτι έχει Αυτό το σύμβολο του δολαρίου, δολαρίου 0 εκεί; 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz: Μήπως η οποία, λυπάμαι; 851 00:47:12,702 --> 00:47:15,360 Κοινό: Μήπως Perl έχουν Αυτό δολαρίου 0, δολάριο 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: Δεν είμαι πάρα πολύ εξοικειωμένοι με Perl, 853 00:47:17,318 --> 00:47:21,340 αλλά αυτό που καθορίζει PHP μεταβλητές βασίζονται σε σημάδια δολαρίων. 854 00:47:21,340 --> 00:47:26,120 Και μπορεί να υπάρχουν κάποιες γλώσσες που έχουν χαρακτηριστικά όπως αυτό. 855 00:47:26,120 --> 00:47:28,240 Στην πραγματικότητα, το Swift δανείζεται ένα πολλά χαρακτηριστικά, όπως αυτό 856 00:47:28,240 --> 00:47:29,489 από πολλές άλλες γλώσσες. 857 00:47:29,489 --> 00:47:32,380 Βλέπουμε υποδείξεις της Python σε αυτό. 858 00:47:32,380 --> 00:47:35,800 Αυτός ο ορισμός του τύπου φαίνεται να προέρχεται από OCaml. 859 00:47:35,800 --> 00:47:38,932 Και έχουμε ακριβώς ένα σωρό τα πράγματα από πολλές διαφορετικές γλώσσες. 860 00:47:38,932 --> 00:47:40,640 Αυτό είναι ένα από τα ωραία πράγματα για Swift 861 00:47:40,640 --> 00:47:43,390 είναι ότι παίρνει πολλά από τα καλύτερα ιδέες από μια δέσμη των γλωσσών 862 00:47:43,390 --> 00:47:47,229 και όλα αυτά μαζί shoehorns σε ένα σούπερ γλώσσα. 863 00:47:47,229 --> 00:47:49,520 Στην πραγματικότητα, αν μου επιτρέπετε να συνεχίσει φυσά το μυαλό σας, 864 00:47:49,520 --> 00:47:51,000 έτσι έχουμε κάνει όλα αυτά. 865 00:47:51,000 --> 00:47:56,690 Μπορούμε ίσως να απλοποιήσει αυτή τη λίγη σιγά να συνειδητοποιούν ότι, φυσικά, 866 00:47:56,690 --> 00:48:02,120 Swift έχει exponentiating ενσωματωμένη λειτουργία σε. 867 00:48:02,120 --> 00:48:04,660 Αν μπορώ να εισάγω τον Δαρβίνο, η οποία είναι ακριβώς η βιβλιοθήκη που 868 00:48:04,660 --> 00:48:09,680 διαθέτει αυτή τη λειτουργία ονομάζεται Pow, τώρα Μπορώ να απλοποιήσει τη δύναμή μου της λειτουργίας 869 00:48:09,680 --> 00:48:11,830 να είναι τα ακόλουθα. 870 00:48:11,830 --> 00:48:15,860 Δεν πρόκειται να επιστρέψει Αυτή η ανώνυμη συνάρτηση. 871 00:48:15,860 --> 00:48:17,950 >> Αλλά κοιτάξτε πόσο απλό είναι αυτό τώρα. 872 00:48:17,950 --> 00:48:22,780 Αυτή είναι μια ανώνυμη συνάρτηση που δέχεται κάποιο είδος των δεδομένων, 873 00:48:22,780 --> 00:48:26,600 και πρόκειται να είναι ένα επιχείρημα συγκεκριμένα, 874 00:48:26,600 --> 00:48:29,320 Παραπέμπεται σε $ 0, ο οποίος είναι τύπου double. 875 00:48:29,320 --> 00:48:32,680 Δεν πρόκειται να επιστρέψει ένα είδος διπλό. 876 00:48:32,680 --> 00:48:35,760 Αλλά η δήλωση επιστροφής είναι τώρα σιωπηρή. 877 00:48:35,760 --> 00:48:39,990 >> Και είναι αυτό ακριβώς στυλ που Είναι πολύ, πολύ διαδεδομένη στο Swift, 878 00:48:39,990 --> 00:48:40,790 σε όλη τη χώρα. 879 00:48:40,790 --> 00:48:43,190 Εμείς πάμε να δούμε αυτό όλη την ώρα στο Swift. 880 00:48:43,190 --> 00:48:46,150 Έτσι δείχνω όλα αυτά για να Σας εξαιτίας αυτής της σύνταξης. 881 00:48:46,150 --> 00:48:49,070 Αυτό είναι πολύ κοινό για να δείτε, το οποίο σημαίνει ότι 882 00:48:49,070 --> 00:48:51,420 είναι μια ανώνυμη συνάρτηση που εκτελεί 883 00:48:51,420 --> 00:48:54,640 κάποια λειτουργία σε αυτά τα επιχειρήματα. 884 00:48:54,640 --> 00:48:56,940 Και υπάρχει μια σιωπηρή επιστροφή. 885 00:48:56,940 --> 00:49:01,850 Γι 'αυτό είναι απολύτως το ίδιο πράγμα για εμάς να το πω αυτό, ακριβώς εδώ. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Επειδή αυτή σγουρά βραχίονα είναι μια λειτουργία, 888 00:49:08,150 --> 00:49:10,480 είμαστε εκτέλεση αυτής της λειτουργίας σχετικά με το πρώτο επιχείρημα. 889 00:49:10,480 --> 00:49:12,170 Εμείς πάμε για να επιστρέψει αυτό. 890 00:49:12,170 --> 00:49:14,815 Αλλά αυτό είναι το εξωτερικό επιστροφή επιστρέφοντας αυτή όλης λειτουργίας, 891 00:49:14,815 --> 00:49:19,855 ότι ολόκληρη η ανώνυμη συνάρτηση ότι έχουμε μόλις δημιουργήσατε. 892 00:49:19,855 --> 00:49:21,689 Οποιεσδήποτε άλλες ερωτήσεις; 893 00:49:21,689 --> 00:49:23,980 Εντάξει, δεν ξέρω αν εσείς είστε έτοιμοι για αυτό, 894 00:49:23,980 --> 00:49:27,455 αλλά μπορούμε να πάμε ακόμα πιο τρελός με το Swift. 895 00:49:27,455 --> 00:49:28,560 Είστε έτοιμοι? 896 00:49:28,560 --> 00:49:29,930 Εντάξει, αυτό είναι μεγάλη. 897 00:49:29,930 --> 00:49:35,310 >> Τώρα έχουμε πραγματικά τη δυνατότητα να, σε Swift, λόγω του τρόπου με αρθρωτή 898 00:49:35,310 --> 00:49:39,650 και πως με βάση το πρωτόκολλο που είναι, να καθορίσει τη δική του freaking φορείς μας. 899 00:49:39,650 --> 00:49:44,060 Όπως και στην περίπτωση αυτή, δεν είχαμε χειριστή για exponentiation-- καλά, 900 00:49:44,060 --> 00:49:47,990 για την εκτέλεση των αρμοδιοτήτων κάτι. 901 00:49:47,990 --> 00:49:53,632 Αλλά μπορώ να σε Swift, ορίζουν ένα νέο φορέας που κάνει ακριβώς αυτό. 902 00:49:53,632 --> 00:49:55,590 Έτσι, σε αυτή την περίπτωση δεν υπάρχει ένα μάτσο σύνταξη εδώ. 903 00:49:55,590 --> 00:49:59,980 Και εγώ θα σας επιτρέψει να κοιτάξετε στο σπίτι, εάν κοιτάξει κανείς αυτό. 904 00:49:59,980 --> 00:50:06,890 Αλλά εμείς καθορίζουμε αυτό InFix χειριστή, **, η οποία θα μας επιτρέψει στη συνέχεια, 905 00:50:06,890 --> 00:50:09,840 καθορίζοντας τι λειτουργία ** πραγματικότητα 906 00:50:09,840 --> 00:50:15,010 έχει, να αποδεχθεί ένα αριστερό χέρι πλευρά και ένα δεξιά πλευρά, 907 00:50:15,010 --> 00:50:21,190 και στη συνέχεια να επιστρέψει ο εκθέτης της ότι αριστερή πλευρά προς την δεξιά πλευρά. 908 00:50:21,190 --> 00:50:24,850 >> Και έτσι τώρα ξαφνικά μου έχουν δημιουργήσει μια νέα αριθμητή. 909 00:50:24,850 --> 00:50:29,490 Έτσι 2 ** 3 σημαίνει 2 με την τρίτη δύναμη. 910 00:50:29,490 --> 00:50:34,420 [Μυαλό ανατίναξη ΗΧΟΥ] Αυτή η το ίδιο θα πρέπει να σας κάνει να είναι όπως, 911 00:50:34,420 --> 00:50:37,960 Εντάξει, βίδα Γ Πάω Swift σε όλη τη διαδρομή. 912 00:50:37,960 --> 00:50:38,740 Αυτό είναι υπέροχο. 913 00:50:38,740 --> 00:50:40,140 Αυτό είναι αρκετά φανταστική. 914 00:50:40,140 --> 00:50:42,240 >> Αν και αυτό είναι ένα μεγάλο παράδειγμα. 915 00:50:42,240 --> 00:50:45,570 Αλλά έχω ποτέ μια φορά έξω αυτού του παραδείγματος πράγματι 916 00:50:45,570 --> 00:50:46,800 ορίζεται το δικό μου χειριστή. 917 00:50:46,800 --> 00:50:49,710 Αλλά και πάλι, αυτό δείχνει μια πολλή από τη δύναμη της Swift 918 00:50:49,710 --> 00:50:54,050 και γιατί αυτό είναι πραγματικά πραγματικά πολύ δροσερό. 919 00:50:54,050 --> 00:50:55,832 Εντάξει, ναι; 920 00:50:55,832 --> 00:50:57,790 Κοινό: Αν είστε τον καθορισμό των δικών σας φορέα, 921 00:50:57,790 --> 00:51:02,940 πώς ξέρετε εσείς δεν κάνετε λάθος προσπαθήσουν να δημιουργήσουν ένα φορέα που είναι 922 00:51:02,940 --> 00:51:06,040 κάπου σε C, όπως κρυμμένο κάπου στο Swift, 923 00:51:06,040 --> 00:51:12,210 σαν μια σκοτεινή αυτή που σας μπορεί να μην έχετε ξαναδεί. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendariz: Έτσι, αν προσπαθείτε να καθορίσουν τις δικές σας επιχειρήσεις, 925 00:51:15,050 --> 00:51:20,970 υπάρχει ο κίνδυνος του καθορισμού ένα πάνω από μια υπάρχουσα επιχείρηση. 926 00:51:20,970 --> 00:51:24,870 Αυτό πηγαίνει σε ένα επίπεδο λεπτομέρειας που Δεν νομίζω ότι έχουμε χρόνο να πάει πέρα. 927 00:51:24,870 --> 00:51:27,620 Αλλά αυτό είναι ένα ρίσκο. 928 00:51:27,620 --> 00:51:31,320 Και αυτό είναι στην πραγματικότητα ο πραγματικός λόγος Εγώ δεν χρησιμοποιούν το σύμβολο δρομέα, η οποία 929 00:51:31,320 --> 00:51:36,210 όταν είμαστε δακτυλογράφηση δύναμη, που συνήθως χρησιμοποιήστε λίγο καρέ 4 5 ή κάτι 930 00:51:36,210 --> 00:51:40,560 όπως αυτό, ακριβώς τη στιγμή που είμαστε Gchatting φίλους ή οτιδήποτε άλλο. 931 00:51:40,560 --> 00:51:43,660 Αλλά στην περίπτωση αυτή, ότι στην πραγματικότητα θα είχε προκαλέσει μια σύγκρουση. 932 00:51:43,660 --> 00:51:46,450 Και γι 'αυτό μόνο και μόνο επειδή αποφεύγεται Έτυχε να γνωρίζω σε αυτή την περίπτωση 933 00:51:46,450 --> 00:51:50,430 ότι αυτό θα προκαλέσει τη συγκεκριμένη σύγκρουση. 934 00:51:50,430 --> 00:51:52,270 >> Εντάξει. 935 00:51:52,270 --> 00:51:55,080 Τώρα, δυστυχώς, για τα τελευταία επτά λεπτά, 936 00:51:55,080 --> 00:51:57,410 Πρέπει να συνεχίσω να φυσά το μυαλό σας λίγο. 937 00:51:57,410 --> 00:52:00,230 Έτσι, επιτρέψτε μου να σας δείξω κάποια άλλα πράγματα επίσης. 938 00:52:00,230 --> 00:52:03,710 >> Σας έχουμε δείξει αυτήν την ιδέα της έχοντας αυτές τις ανώνυμες λειτουργίες, 939 00:52:03,710 --> 00:52:07,040 Αυτά τα κλεισίματα που σας επιτρέπουν να το είδος των λειτουργιών περνούν γύρω. 940 00:52:07,040 --> 00:52:08,100 Μπορείτε να τα επιστρέψουν. 941 00:52:08,100 --> 00:52:09,490 Μπορείτε να τους χειραγωγήσουν. 942 00:52:09,490 --> 00:52:11,790 Μπορείτε να κάνετε όλα τα είδη των τρελά πράγματα. 943 00:52:11,790 --> 00:52:14,850 >> Αλλά ένα άλλο πράγμα που συμβαίνει να είναι χρήσιμος 944 00:52:14,850 --> 00:52:19,740 είναι η ικανότητα να, σε αντίθεση να επιστρέφουν αυτές τις λειτουργίες 945 00:52:19,740 --> 00:52:25,146 σε λειτουργία, για να περάσει μια λειτουργία ως παράμετρος σε μια άλλη λειτουργία. 946 00:52:25,146 --> 00:52:30,430 Ίσως να σκέφτεται καλά γιατί στη Γη Θα ήθελα να κάνω κάτι τέτοιο; 947 00:52:30,430 --> 00:52:33,660 >> Λοιπόν, ας πούμε ότι θέλω να λαμβάνουν αυτό το φορέα ο οποίος θα 948 00:52:33,660 --> 00:52:40,260 εργάστηκαν τόσο σκληρά για να δημιουργήσουμε και να εφαρμόσουν ότι σε μια δέσμη των διαφορετικών αριθμών 949 00:52:40,260 --> 00:52:41,770 σε μία συστοιχία. 950 00:52:41,770 --> 00:52:46,700 Έτσι, σε αυτή την περίπτωση έχω μια σειρά από integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 Και θέλω να τους όλα τα διπλά. 952 00:52:48,080 --> 00:52:50,430 Ο τρόπος ότι θα συνήθως κάνετε είναι να γράψετε μόνο 953 00:52:50,430 --> 00:52:53,440 ένα απλό για βρόχο που επαναλαμβάνεται σε όλα αυτά 954 00:52:53,440 --> 00:52:57,140 και να εκτελέσει κάποιο είδος τετράγωνο λειτουργία πάνω τους, 955 00:52:57,140 --> 00:53:02,700 εισαγωγή αυτών των νέων αξιών σε μια νέα μεταβλητή, ή μάλλον, μια νέα σειρά εδώ. 956 00:53:02,700 --> 00:53:07,370 Και η αξία της παραγωγής του αποτέλεσμα είναι τότε όλες αυτές τις συστοιχίες, 957 00:53:07,370 --> 00:53:10,200 ή μάλλον όλα αυτά στοιχεία τώρα στο τετράγωνο. 958 00:53:10,200 --> 00:53:12,680 >> Και θα μπορούσαμε να κάνουμε το ίδιο πράγμα για cubing αυτό, 959 00:53:12,680 --> 00:53:15,360 αλλά λίγο κώδωνα του κινδύνου Θα πρέπει να πάει μακριά 960 00:53:15,360 --> 00:53:17,360 λέγοντας ότι ίσως υπάρχει κατά κάποιο τρόπο ότι θα 961 00:53:17,360 --> 00:53:19,860 να είναι σε θέση να απλοποιήσει αυτό το λίγο. 962 00:53:19,860 --> 00:53:21,130 Και στην πραγματικότητα δεν υπάρχει. 963 00:53:21,130 --> 00:53:25,320 Τι και αν θα μπορούσε να δημιουργήσει μια λειτουργία που μας επιτρέπει 964 00:53:25,320 --> 00:53:28,350 να δεχθεί, ως ένα αρπακτικό, μια συνάρτηση; 965 00:53:28,350 --> 00:53:30,350 Έτσι, στην περίπτωση αυτή, να λάβει μια ματιά σε αυτά τα επιχειρήματα. 966 00:53:30,350 --> 00:53:33,220 Εμείς πάμε για να δεχτεί μια λίστα των διπλασιάζεται. 967 00:53:33,220 --> 00:53:35,030 Και μετά θα πάμε να δεχθεί μια λειτουργία 968 00:53:35,030 --> 00:53:40,990 σε μια μεταβλητή που ονομάζεται f που πρόκειται να λάβει ένα διπλό και να επιστρέψει ένα διπλό. 969 00:53:40,990 --> 00:53:43,320 Και η συνολική παραγωγή όλης αυτής της λειτουργίας 970 00:53:43,320 --> 00:53:47,310 που ονομάζεται mapper πρόκειται να επιστρέψει έναν πίνακα που ονομάζεται διπλό. 971 00:53:47,310 --> 00:53:52,380 >> Τι αυτό θα μου επιτρέψετε στη συνέχεια να κάνουμε είναι να επαναλάβει τη διάρκεια αυτής της λίστας 972 00:53:52,380 --> 00:53:56,350 και να κάνει το ίδιο πράγμα, αλλά τώρα εφαρμόζουν την εν λόγω λειτουργία σε κάθε 973 00:53:56,350 --> 00:53:58,970 των μεμονωμένων τιμών στον εν λόγω κατάλογο. 974 00:53:58,970 --> 00:54:00,750 Γι 'αυτό και δεν ξέρω πραγματικά τι f είναι. 975 00:54:00,750 --> 00:54:02,010 Δεν έχει σημασία για μένα. 976 00:54:02,010 --> 00:54:06,530 Αλλά εφ 'όσον χρειάζεται σε δίκλινο, εκτελεί κάποια εργασία σε αυτόν, 977 00:54:06,530 --> 00:54:08,640 και στη συνέχεια να επιστρέφει ένα Διπλό, τότε θα είναι 978 00:54:08,640 --> 00:54:13,415 είναι σε θέση να χαρτογραφήσει τη λειτουργία αυτή σε όλη την κάθε στοιχείο στη λίστα. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> Και αυτό το είδος του προγραμματισμού είναι κάλεσε τις ανώτερες λειτουργίες τάξης, 981 00:54:20,930 --> 00:54:24,440 όπου είμαστε περνώντας λειτουργίες περίπου ως παράμετροι 982 00:54:24,440 --> 00:54:26,430 και να κάνουμε πράγματα με τις λειτουργίες. 983 00:54:26,430 --> 00:54:29,640 Είναι κάπως σαν να όλα αυτά ιδέες που έχουμε μάθει στο CS50 984 00:54:29,640 --> 00:54:31,390 και τη λήψη τους είδους του στο επόμενο επίπεδο. 985 00:54:31,390 --> 00:54:34,140 Και όλα αυτά είναι πράγματα στυλ CS51. 986 00:54:34,140 --> 00:54:37,080 Και έτσι θα πάει σε βάθος περισσότερο στα μαθήματα όπως αυτό. 987 00:54:37,080 --> 00:54:38,930 >> Αλλά αυτό είναι επίσης σημαντικό εδώ γιατί 988 00:54:38,930 --> 00:54:42,010 δείτε πολλές λειτουργίες που χρησιμοποιούνται στην Swift 989 00:54:42,010 --> 00:54:45,590 ότι ουσιαστικά δεν αυτό, όπου έχουμε 990 00:54:45,590 --> 00:54:48,300 ορισμένοι αριθμοί, ορισμένοι συστοιχία αριθμών. 991 00:54:48,300 --> 00:54:50,850 Εμείς πάμε για να περάσει ότι συστοιχία σε mapper μας. 992 00:54:50,850 --> 00:54:55,770 Και είμαστε επίσης πρόκειται να περάσει κάποια λειτουργία, η οποία 993 00:54:55,770 --> 00:54:57,950 έχουμε ήδη οριστεί εδώ. 994 00:54:57,950 --> 00:54:59,690 Είναι πρόκειται να είναι τετράγωνο. 995 00:54:59,690 --> 00:55:02,220 Και θα πάμε να, στη συνέχεια, Πλατεία όλων αυτών των αριθμών 996 00:55:02,220 --> 00:55:04,710 και να αποθηκεύσετε ότι σε αυτό το αποτέλεσμα εδώ. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Έτσι αυτή η περίπτωση που έχουμε καθορίσει μας τη δική της λειτουργία που ονομάζεται mapper. 999 00:55:11,000 --> 00:55:15,370 Αλλά αυτό ακριβώς το πράγμα είναι, Στην πραγματικότητα, χτισμένο σε Swift. 1000 00:55:15,370 --> 00:55:18,960 Υπάρχει μια ποικιλία από λειτουργίες που ονομάζεται χάρτη. 1001 00:55:18,960 --> 00:55:21,520 Υπάρχει ένας χάρτης λειτουργίας, υπάρχει μια μείωση της λειτουργίας, 1002 00:55:21,520 --> 00:55:25,630 και υπάρχει και η λειτουργία του φίλτρου, οι οποίες εφαρμόζονται κατ 'ουσίαν λειτουργίες 1003 00:55:25,630 --> 00:55:30,782 για κάθε στοιχείο σε μια λίστα για να τις τροποποιήσετε με κάποιον τρόπο. 1004 00:55:30,782 --> 00:55:34,510 >> Κοινό: Έτσι, από τη στιγμή που μετασχηματίζουν τα δεδομένα σε άλλη μορφή 1005 00:55:34,510 --> 00:55:36,134 μέσω function-- 1006 00:55:36,134 --> 00:55:37,050 DAN Armendariz: Δεξιά. 1007 00:55:37,050 --> 00:55:39,420 Ναι, έτσι ώστε η λειτουργία ότι είμαστε αποδοχή 1008 00:55:39,420 --> 00:55:41,790 μετασχηματίζει τα δεδομένα με κάποιο τρόπο. 1009 00:55:41,790 --> 00:55:44,700 Σε αυτή την περίπτωση, ήμασταν είτε τετραγωνισμό του, είτε ήταν το cubing, 1010 00:55:44,700 --> 00:55:50,060 ή πραγματικά, θα μπορούσε να εκτελέσει καμία λειτουργία σε αυτό καθόλου. 1011 00:55:50,060 --> 00:55:54,150 >> Αλλά επιτρέψτε μου να σας δείξει πώς αυτή η συνέχεια πρόκειται να δούμε στην πράξη. 1012 00:55:54,150 --> 00:55:56,681 Και πάλι, τρέχω ένα λίγο χρόνο. έτσι δεν είμαι 1013 00:55:56,681 --> 00:55:59,430 πρόκειται να είναι σε θέση να πάει πάνω από όλα του πηγαίου κώδικα εδώ λεπτομερώς. 1014 00:55:59,430 --> 00:56:00,721 Αλλά εγώ σας ενθαρρύνω να το κάνουμε αυτό. 1015 00:56:00,721 --> 00:56:03,850 Θα το δημοσιεύσετε το συντομότερο μετά από αυτή την ομιλία. 1016 00:56:03,850 --> 00:56:07,610 >> Αλλά αν ρίξουμε μια ματιά σε αυτό, υποθέσουμε ότι έχουμε μια λίστα με αριθμούς, 1017 00:56:07,610 --> 00:56:10,260 μια σειρά από αριθμούς σε αυτό μεταβλητή που ονομάζεται αριθμούς. 1018 00:56:10,260 --> 00:56:16,670 Στη συνέχεια, θέλουμε να πραγματοποιήσουμε αυτό λειτουργία φίλτρων σε αυτούς τους αριθμούς. 1019 00:56:16,670 --> 00:56:19,730 Έτσι, το φίλτρο είναι υψηλότερη Λειτουργία τάξη που 1020 00:56:19,730 --> 00:56:24,660 δέχεται έναν πίνακα και επίσης μια λειτουργία. 1021 00:56:24,660 --> 00:56:28,760 Και σε κάθε στοιχείο σε ότι σειρά, εκτελεί τα καθήκοντα αυτά. 1022 00:56:28,760 --> 00:56:31,990 >> Αν αυτή η λειτουργία επιστρέφει αλήθεια, διατηρεί αυτό το στοιχείο. 1023 00:56:31,990 --> 00:56:36,100 Αν αυτή η λειτουργία επιστρέφει false, να πετάει αυτό το στοιχείο. 1024 00:56:36,100 --> 00:56:40,480 Και τότε επιστρέφει μία λίστα ότι συνέχεια γίνεται όλες 1025 00:56:40,480 --> 00:56:44,360 αυτών των στοιχείων που έχουν φιλτραριστεί. 1026 00:56:44,360 --> 00:56:47,150 >> Έτσι, με άλλα λόγια, αυτό είναι η ίδια ιδέα, το Βαθμολόγιο. 1027 00:56:47,150 --> 00:56:50,800 Θα μπορούσαμε να έχουμε μια ποικιλία βαθμών σε αυτό αριθμούς τιμή που ονομάζεται. 1028 00:56:50,800 --> 00:56:55,590 Θα μπορούσε να είναι 100, και 70, και 40, ούτω καθεξής και ούτω καθεξής. 1029 00:56:55,590 --> 00:56:59,110 Τι κάνει αυτό το φίλτρο είναι ειδοποίηση ότι αυτό είναι ότι συντακτική ζάχαρη 1030 00:56:59,110 --> 00:57:01,310 για μια ανώνυμη συνάρτηση. 1031 00:57:01,310 --> 00:57:05,980 Αυτή είναι μια ανώνυμη συνάρτηση λέγοντας ότι η παράμετρος που είμαι αποδοχή 1032 00:57:05,980 --> 00:57:09,690 πρόκειται να είναι, αν είναι μεγαλύτερο από 70, 1033 00:57:09,690 --> 00:57:15,837 τότε αυτό θα επιστρέψει αλήθεια, πράγμα που σημαίνει ότι αυτό το στοιχείο θα πρέπει να φυλάσσονται σε αυτό το φίλτρο. 1034 00:57:15,837 --> 00:57:17,920 Οπότε ας είμαστε λίγο Πιο συγκεκριμένα γι 'αυτό. 1035 00:57:17,920 --> 00:57:25,760 Αν έχω αυτή τη σειρά των αριθμών και αποτελείται από 100, 70, και 40, 1036 00:57:25,760 --> 00:57:29,730 Εκτελώ αυτό το φίλτρο λειτουργία σε κάθε ένα από αυτά. 1037 00:57:29,730 --> 00:57:33,270 Έτσι ώστε πρώτη είναι αυτή η τιμή του 100. 1038 00:57:33,270 --> 00:57:36,770 100 μεγαλύτερη ή ίση 70 Είναι αλήθεια, η οποία 1039 00:57:36,770 --> 00:57:41,950 σημαίνει ότι 100 διατηρείται σε Αυτό το νέο αντίγραφο της παρούσας διάταξης. 1040 00:57:41,950 --> 00:57:44,290 70 περνάει επίσης. 1041 00:57:44,290 --> 00:57:46,020 Αλλά δεν το κάνει 40. 1042 00:57:46,020 --> 00:57:54,290 Έτσι, αυτό επιστρέφεται στο passingCount είναι η συστοιχία των στοιχείων 100 και 70-- 1043 00:57:54,290 --> 00:57:57,410 100, κόμμα, 70. 1044 00:57:57,410 --> 00:57:59,870 Αυτά ήταν τα μόνα δύο στοιχεία που κρατήθηκαν. 1045 00:57:59,870 --> 00:58:03,740 Και έτσι ο λόγος που πήγε γρήγορα μέσω Πολλά από αυτά τα είδη των υψηλής τάξης 1046 00:58:03,740 --> 00:58:08,680 τα πράγματα είναι επειδή αυτό είναι ότι η κοινή πράγμα που θα δείτε σε λίγο Swift 1047 00:58:08,680 --> 00:58:16,810 συχνά, εκτελεί κάποια λειτουργία χρήση αυτών των ανώνυμων σύνταξη της συνάρτησης. 1048 00:58:16,810 --> 00:58:18,450 >> Υπάρχει κάποια δροσερή ουσία. 1049 00:58:18,450 --> 00:58:24,730 Διακόπτες είναι πραγματικά ισχυρή σε Swift, Εννοώ απλά σαν τρελός, τρελός ισχυρό. 1050 00:58:24,730 --> 00:58:28,250 Μπορείτε να χρησιμοποιήσετε το διακόπτη, και μπορείτε να εφαρμόσετε τα πραγματικά 1051 00:58:28,250 --> 00:58:33,160 σε περιοχές, οι οποίες είναι το είδος της τρελό, και να κάνει φανταχτερά πράγματα όπως αυτό. 1052 00:58:33,160 --> 00:58:37,540 >> Αλλά στα τελευταία λεπτά, Θέλω να προχωρήσετε αρκετά μακριά 1053 00:58:37,540 --> 00:58:46,940 και να σας δείξει ένα συγκεκριμένο παράδειγμα για το πώς μπορούμε να δημιουργήσουμε στο iOS app χρησιμοποιώντας Swift. 1054 00:58:46,940 --> 00:58:49,040 Έτσι, όταν κάνετε αυτό, θα πρέπει να λάβει 1055 00:58:49,040 --> 00:58:51,990 μια ματιά στις at-- της Apple τεκμηρίωση, που 1056 00:58:51,990 --> 00:58:56,084 έχουν πολλά πραγματικά καλά σεμινάρια για τη δημιουργία πρώτη εφαρμογή σας. 1057 00:58:56,084 --> 00:58:58,250 Και ήθελα να σας ενθαρρύνω να κάνετε ότι, επειδή παίρνετε 1058 00:58:58,250 --> 00:59:04,110 σε όλα τα βήματα του τι ακριβώς να κάντε κλικ για να δημιουργήσετε μια εφαρμογή iOS. 1059 00:59:04,110 --> 00:59:07,290 >> Αλλά εδώ έχουμε αυτό το iOS app. 1060 00:59:07,290 --> 00:59:10,960 Και αυτό είναι ένα πολύ απλό app πραγματικά. 1061 00:59:10,960 --> 00:59:13,840 Αν τρέξω αυτό, επιτρέψτε μου να δείχνουν σας τι μοιάζει. 1062 00:59:13,840 --> 00:59:19,480 Το μόνο που κάνει ουσιαστικά είναι τραβά από το διαδίκτυο ένα αρχείο JSON 1063 00:59:19,480 --> 00:59:22,300 ότι έχω αποθηκευμένα σε έναν διακομιστή. 1064 00:59:22,300 --> 00:59:26,310 Και αυτό το αρχείο JSON ορίζει τις εικόνες που επιτρέπουν 1065 00:59:26,310 --> 00:59:31,680 Θέλω να περιηγηθείτε στη συνέχεια, στις μου app, εικόνες από τον web server μου. 1066 00:59:31,680 --> 00:59:32,880 >> Έτσι έχω εδώ getNextImage. 1067 00:59:32,880 --> 00:59:37,100 Φορτώνει μια εικόνα από το διαδίκτυο, και στη συνέχεια εμφανίζει στην οθόνη. 1068 00:59:37,100 --> 00:59:38,200 >> Έτσι, είναι αρκετά απλό. 1069 00:59:38,200 --> 00:59:41,550 Αλλά ο στόχος εδώ είναι να δείξουμε πώς μπορούμε να συνδυάσουμε τα πράγματα 1070 00:59:41,550 --> 00:59:47,820 από τις τελευταίες λίγες εβδομάδες του CS50 σε μια πραγματική εφαρμογή iOS. 1071 00:59:47,820 --> 00:59:53,140 Με άλλα λόγια, ίσως ένα από τα πράγματα που θα θέλετε να κάνετε 1072 00:59:53,140 --> 00:59:56,340 είναι να έχουμε μια εφαρμογή iOS ότι μπορεί να τραβήξει δεδομένα από το Διαδίκτυο 1073 00:59:56,340 --> 00:59:59,070 και να δείξει στον χρήστη κάποιες πληροφορίες. 1074 00:59:59,070 --> 01:00:03,130 Αυτό είναι εντελώς το σημείο αυτού του πηγαίου κώδικα εδώ. 1075 01:00:03,130 --> 01:00:07,890 >> Έτσι, υπάρχουν πολλά να πούμε γι ' πώς να το κάνουμε πραγματική ανάπτυξη iOS. 1076 01:00:07,890 --> 01:00:12,860 Υπάρχει ένα πολύ τρελό σύνταξης ότι δεν έχουμε δει αρκετά ακόμα 1077 01:00:12,860 --> 01:00:15,580 σαν μια τάξη, μια τάξη τι είναι στην πραγματικότητα. 1078 01:00:15,580 --> 01:00:19,470 Μπορούμε να αγνοήσουμε σε μεγάλο βαθμό ότι προς το παρόν. 1079 01:00:19,470 --> 01:00:23,250 >> Να σημειωθεί όμως ότι έχουμε περιέχονται εντός αυτό μια ποικιλία από πράγματα 1080 01:00:23,250 --> 01:00:27,720 ότι έχουμε ήδη δει, όπως λειτουργίες που έχουν συγκεκριμένα ονόματα. 1081 01:00:27,720 --> 01:00:32,650 Και όταν δίνουμε εκείνους Λειτουργεί τα σωστά ονόματα 1082 01:00:32,650 --> 01:00:36,530 που αναμένεται από το iOS, στην πραγματικότητα, αυτό αισθάνεται λίγο μαγικό. 1083 01:00:36,530 --> 01:00:40,300 Αλλά όταν δημιουργείτε ένα εφαρμογή iOS, υπάρχει 1084 01:00:40,300 --> 01:00:47,590 είναι συγκεκριμένα ονόματα λειτουργία που καλούνται από το ίδιο το τηλέφωνο 1085 01:00:47,590 --> 01:00:52,440 όπως η εφαρμογή φορτώνει να δοκιμάσετε για να δημιουργήσετε τη διαδικασία που στην πραγματικότητα 1086 01:00:52,440 --> 01:00:54,787 τρέχει την αίτησή σας. 1087 01:00:54,787 --> 01:00:58,120 Έτσι και πάλι, υπάρχουν πολλά πράγματα που έχω Πρέπει να αποσιωπήσει εδώ για να μπορέσουμε 1088 01:00:58,120 --> 01:01:00,570 να μιλήσει για το συγκεκριμένο θέμα. 1089 01:01:00,570 --> 01:01:06,050 Αλλά ήθελα να σας ενθαρρύνω να εξετάσουμε ίσως το άλλο σεμινάριο iOS, αλλά και ορισμένα 1090 01:01:06,050 --> 01:01:09,290 της σε απευθείας σύνδεση σεμινάρια που κάνουμε μια πολύ καλύτερη δουλειά που περιγράφουν 1091 01:01:09,290 --> 01:01:11,030 η συγκεκριμένη πληροφορία. 1092 01:01:11,030 --> 01:01:15,760 >> Αλλά μπορούμε να δούμε μερικά πράγματα που είναι ενδιαφέρουσα από τον κώδικα εδώ. 1093 01:01:15,760 --> 01:01:17,950 Σημειώστε ότι, αν έχουμε δηλώσεις. 1094 01:01:17,950 --> 01:01:20,400 Με την ευκαιρία, ένας σημαντικός πράγμα για το αν δηλώσεις 1095 01:01:20,400 --> 01:01:24,860 είναι ότι οι παρενθέσεις γύρω από τη Boolean έκφραση είναι προαιρετική. 1096 01:01:24,860 --> 01:01:30,800 Αλλά οι αγκύλες δεν είναι προαιρετική, δεν έχει σημασία πόσο λίγοι ή πολλοί γραμμές κώδικα 1097 01:01:30,800 --> 01:01:32,360 έχετε σε ένα if. 1098 01:01:32,360 --> 01:01:38,670 Δεν μπορείτε να έχετε μια περίπτωση καταστάσεων χωρίς αγκύλες στο Swift. 1099 01:01:38,670 --> 01:01:41,000 >> Και αυτό είναι, επίσης, ένα είδος ανόητο. 1100 01:01:41,000 --> 01:01:43,910 Αλλά υπάρχουν ιστορικοί λόγοι για αυτό. 1101 01:01:43,910 --> 01:01:46,180 Είναι υποτίθεται για να σας σώσει από τον εαυτό σας. 1102 01:01:46,180 --> 01:01:49,899 Όπως και αυτό, για παράδειγμα, δεν μπορείτε να εξαλειφθούν τα άγκιστρα γύρω από αυτό 1103 01:01:49,899 --> 01:01:50,440 if. 1104 01:01:50,440 --> 01:01:52,730 Αυτοί είναι στην πραγματικότητα απαιτείται. 1105 01:01:52,730 --> 01:01:54,480 Γι 'αυτό σας ενθαρρύνω να ρίξτε μια ματιά σε αυτό. 1106 01:01:54,480 --> 01:01:56,230 Αλλά υπάρχει ένα ακόμη κατασκευή που θέλω 1107 01:01:56,230 --> 01:02:02,640 για να σας δείξει ότι περίπου Swift είναι νέα σε σύγκριση Swift 2.0 1108 01:02:02,640 --> 01:02:08,460 σε παλαιότερες εκδόσεις του Swift, η οποία είναι η ακόλουθη. 1109 01:02:08,460 --> 01:02:11,620 Ας δούμε πού το έβαλα εδώ; 1110 01:02:11,620 --> 01:02:16,630 >> Έτσι, σε αυτή τη λειτουργία που ονομάζεται fetchJSON, αυτή η λειτουργία 1111 01:02:16,630 --> 01:02:23,450 είναι υπεύθυνη για το τράβηγμα ότι JSON αρχείο από μια διεύθυνση URL, το οποίο ακριβώς έτσι συμβαίνει 1112 01:02:23,450 --> 01:02:26,310 να λειτουργεί από το CS50 IDE μου. 1113 01:02:26,310 --> 01:02:28,580 Μόλις άρχισα Apache, να θέσει το αρχείο JSON μου εκεί, 1114 01:02:28,580 --> 01:02:32,110 και είμαι σε θέση να τραβήξει ότι, στη συνέχεια, δεδομένα από το Διαδίκτυο χρησιμοποιώντας 1115 01:02:32,110 --> 01:02:36,430 αυτή η δράση και αυτό το URL, το οποίο παρέχεται από το τηλέφωνο. 1116 01:02:36,430 --> 01:02:40,490 Είναι ένα που παρέχονται από βιβλιοθήκη που χρησιμοποιείτε όταν 1117 01:02:40,490 --> 01:02:43,140 κάνετε κάποια iOS app ανάπτυξης. 1118 01:02:43,140 --> 01:02:49,690 >> Σημειώστε εδώ ότι υπάρχει αυτή η ασυνήθιστη συντακτική δομή που ονομάζεται φρουρά. 1119 01:02:49,690 --> 01:02:53,530 Και πραγματικά όλα αυτά είναι σε Swift είναι ένας τρόπος ελέγχου 1120 01:02:53,530 --> 01:02:56,870 ότι κάποια πράγματα έχουν πληρούνται προτού 1121 01:02:56,870 --> 01:03:00,000 προχωρήσει με το υπόλοιπο της λειτουργίας. 1122 01:03:00,000 --> 01:03:04,260 Γι 'αυτό και θα μπορούσε να έχει, με τη χρήση αυτό το προαιρετικό τύπου, 1123 01:03:04,260 --> 01:03:10,530 Θα μπορούσα να είχα βρει το URL από εκτελεί αυτή τη λειτουργία NSURL 1124 01:03:10,530 --> 01:03:16,640 και την αποθήκευση ότι σε μια διεύθυνση URL σταθερή, και στη συνέχεια τον έλεγχο 1125 01:03:16,640 --> 01:03:20,820 για να δούμε αν η διεύθυνση URL ήταν μηδενική, διότι επρόκειτο να επιστρέψει μια προαιρετική τύπου. 1126 01:03:20,820 --> 01:03:25,660 Και αν ήταν μηδενική, τότε θα ήθελα εκτυπώσετε ένα σφάλμα και στη συνέχεια να επιστρέψουν. 1127 01:03:25,660 --> 01:03:29,970 >> Αλλά αντ 'αυτού, τι αφήνει φρουρά κάνουμε είναι ότι πολύ το πράγμα, 1128 01:03:29,970 --> 01:03:34,550 αλλά βεβαιωθείτε ότι είναι στην πραγματικότητα η υπόθεση ότι η διεύθυνση URL 1129 01:03:34,550 --> 01:03:38,020 έχει ρυθμιστεί σωστά από NSURL. 1130 01:03:38,020 --> 01:03:41,810 Και εάν είναι, τότε παραλείπει αυτό, και 1131 01:03:41,810 --> 01:03:46,110 θα σας επιτρέψει να προχωρήσει με url έχει καθοριστεί σωστά. 1132 01:03:46,110 --> 01:03:48,830 Αλλά αν είναι αλήθεια ότι url δεν έχει οριστεί σωστά, 1133 01:03:48,830 --> 01:03:52,550 αν αυτή η συνάρτηση επιστρέφει ένα σφάλμα ή κάποιο άλλο απροσδόκητο πράγμα 1134 01:03:52,550 --> 01:03:58,030 συμβαίνει στην πραγματικότητα, αυτό το κατασκεύασμα φρουρά μας επιτρέπει να τότε η έξοδος ότι σφάλματος 1135 01:03:58,030 --> 01:04:00,390 και να επιστρέψει αμέσως. 1136 01:04:00,390 --> 01:04:00,890 Ναί? 1137 01:04:00,890 --> 01:04:04,839 >> Κοινό: Έτσι είναι το είδος σαν ένα, αν στη συνέχεια άλλο; 1138 01:04:04,839 --> 01:04:07,130 DAN Armendariz: Είναι το είδος του σαν ένας άλλος αν τότε, ναι, 1139 01:04:07,130 --> 01:04:14,200 εκτός από το ότι αυτό το URL είναι τότε ορίζεται για τα πάντα κάτω από αυτό. 1140 01:04:14,200 --> 01:04:20,420 Αν περάσει ο προφυλακτήρας, τότε όντως θα γεμίσει με δεδομένα 1141 01:04:20,420 --> 01:04:29,500 και μπορούν να χρησιμοποιηθούν στο υπόλοιπο πηγαίο κώδικα σε λειτουργία σας. 1142 01:04:29,500 --> 01:04:33,790 Έτσι υποψιάζομαι ότι πρόκειται να αρχίσουμε να βλέπουμε αυτό το προφυλακτήρα καθώς και. 1143 01:04:33,790 --> 01:04:36,670 Και να λαμβάνει υπόψη της ότι. 1144 01:04:36,670 --> 01:04:46,270 >> Έτσι απλά κοιτάζοντας ένα ζευγάρι των άλλων τα πράγματα, το δικαίωμα αυτό εδώ είναι ό, τι, 1145 01:04:46,270 --> 01:04:53,377 νομίζεις, απλά βασίζονται σε ό, τι μιλούσαμε για πριν; 1146 01:04:53,377 --> 01:04:56,650 >> Κοινό: Σκεφτείτε ότι θα τρέξει στη λίστα; 1147 01:04:56,650 --> 01:04:59,100 >> DAN Armendariz: Έτσι ώστε να είναι κοντά. 1148 01:04:59,100 --> 01:05:02,360 Αυτή είναι μια λειτουργία που ορίζουμε. 1149 01:05:02,360 --> 01:05:07,240 Και είμαστε εισαγωγή αυτής της λειτουργίας ως επιχείρημα για αυτή τη λειτουργία εδώ. 1150 01:05:07,240 --> 01:05:09,120 >> Κοινό: [δεν ακούγεται], αν όχι μηδαμινές. 1151 01:05:09,120 --> 01:05:11,470 Έτσι είναι στη λίστα, έτσι δεν είναι; 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: Εάν το σφάλμα δεν είναι μηδενική, έτσι ώστε is-- γι 'αυτό πρέπει να μετακινηθείτε. 1153 01:05:15,450 --> 01:05:18,060 Λοιπόν, ας δούμε, δεν μπορώ πραγματικά να μετακινηθείτε προς τα δεξιά εδώ. 1154 01:05:18,060 --> 01:05:23,161 σφάλμα είναι ένα επιχείρημα που είναι πέρασε σε αυτήν την ανώνυμη λειτουργία. 1155 01:05:23,161 --> 01:05:24,410 Αυτή είναι μια ανώνυμη λειτουργία. 1156 01:05:24,410 --> 01:05:25,480 Δεν έχει όνομα. 1157 01:05:25,480 --> 01:05:29,850 Αλλά δεχόμαστε αυτά τα τρία επιχειρήματα, στοιχεία, απάντηση, και το λάθος. 1158 01:05:29,850 --> 01:05:33,590 Και αυτό δεν πρόκειται να επιστρέψει άκυρη, έτσι δεν πρόκειται να επιστρέψει τίποτα. 1159 01:05:33,590 --> 01:05:37,910 Και αυτό είναι τα περιεχόμενα αυτής της λειτουργίας. 1160 01:05:37,910 --> 01:05:41,961 Και τότε έχουμε πρόσβαση στο εσωτερικό που λειτουργία σε καθένα από αυτά τα επιχειρήματα. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Έτσι είναι ένας ανεμοστρόβιλος περιοδεία της γλώσσας. 1163 01:05:48,679 --> 01:05:50,470 Αλλά ελπίζω ότι με αυτό, ελπίζω, όπως μπορείτε να 1164 01:05:50,470 --> 01:05:54,490 Μια ματιά σε μερικά από τα μαθήματα ειδικά για iOS ανάπτυξη με Swift, 1165 01:05:54,490 --> 01:05:57,481 ειδικά αν πάτε να Για την ανάπτυξη Ιστού page-- της Apple 1166 01:05:57,481 --> 01:05:59,980 έχουν πολύ πολύ καλό tutorials για να ξεκινήσετε. 1167 01:05:59,980 --> 01:06:05,010 Αλλά ελπίζουμε ότι ακριβώς αυτή η ώρα της ομιλίας σχετικά με τη σύνταξη η ίδια έχει δώσει 1168 01:06:05,010 --> 01:06:08,760 Είστε αρκετά για να ξεκινήσετε με αυτό. 1169 01:06:08,760 --> 01:06:12,950 >> Θα δημοσιεύουμε όλη αυτήν την πηγή κώδικα στην ιστοσελίδα του σεμιναρίου 1170 01:06:12,950 --> 01:06:17,800 το συντομότερο δυνατόν, και επίσης τις διαφάνειες έτσι ώστε να έχουν ένα σημείο αναφοράς για όλους εκείνους. 1171 01:06:17,800 --> 01:06:20,530 Όμως, η καλή τύχη με τα έργα σας. 1172 01:06:20,530 --> 01:06:23,640 Και σας ευχαριστώ όλους πάρα πολύ για την παρουσία. 1173 01:06:23,640 --> 01:06:26,990 >> [ΧΕΙΡΟΚΡΟΤΉΜΑΤΑ] 1174 01:06:26,990 --> 01:06:28,026