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 دائرة الرقابة الداخلية تطوير التطبيق مع سويفت. 5 00:00:11,690 --> 00:00:15,690 أنا دان ارمينداريز، وأنا مؤدب علم الحاسوب هنا في جامعة هارفارد. 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 سنبدأ من القيام ببعض الأساسية جملة مع اللغة سويفت، 16 00:00:52,820 --> 00:00:56,290 الخوض في بعض من أكثر تقدما بناء جملة لغة سويفت. 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 مع سويفت، أو حقا أي تطوير التطبيق دائرة الرقابة الداخلية، 28 00:01:34,442 --> 00:01:35,900 هناك اثنين من المتطلبات. 29 00:01:35,900 --> 00:01:39,940 أولا وقبل كل شيء، عليك أن تستخدم ماك، على التوالي في الأمثلة 30 00:01:39,940 --> 00:01:43,880 أننا ذاهبون إلى استخدام اليوم، نسخة جديدة نسبيا من OS 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 ولكن كل ما كنت ذاهب ل رؤية بإشراك كسكودي 7 و في وقت لاحق، 34 00:01:52,430 --> 00:01:56,271 الذي يحتوي على أحدث نسخة من سويفت، وهو سويفت 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 في بعض الحالات من سويفت 1.0، الذي صدر في العام الماضي، 38 00:02:05,890 --> 00:02:08,514 لسويفت 2.0، والتي خرج للتو في خريف هذا العام. 39 00:02:08,514 --> 00:02:09,889 لذلك نحن ذاهبون لاظهار سويفت 2.0. 40 00:02:09,889 --> 00:02:13,020 وهناك الكثير من الأشياء التي كنت ابحث عن الانترنت 41 00:02:13,020 --> 00:02:18,040 عندما كنت في محاولة للحصول على إضافية معلومات عن مجموعة متنوعة من الأشياء، 42 00:02:18,040 --> 00:02:20,710 قد تحتاج إلى صراحة البحث عن سويفت 2 43 00:02:20,710 --> 00:02:24,950 بدلا من مجرد سويفت القديم سهل لجعل تأكد من أنك تحصل على بناء الجملة الصحيح. 44 00:02:24,950 --> 00:02:26,920 >> في الواقع، وهذا صحيح بشكل عام. 45 00:02:26,920 --> 00:02:31,210 هناك كمية السريع للتنمية يحدث في لغة سويفت 46 00:02:31,210 --> 00:02:35,110 منذ أصدرت أبل ذلك، وأعتقد ما، لقد كان ما يزيد قليلا عن العام 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 لالموضوعات المدرجة على سويفت أو كيفية تحقيق شيء باستخدام بعض رمز المثال 51 00:02:48,310 --> 00:02:51,210 أو شيء من هذا أنه لا فعلا العمل على سويفت 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 أنه سيكون لديك مع سويفت هو العثور على رمز المثال أن أقدم، حتى مجرد 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 لدينا تجربة جميلة جدا مع عموما سويفت. 63 00:03:24,200 --> 00:03:28,430 >> يمكنك الآن فعلا join-- وآمل ونحن في الواقع لا تزال لديها هذا هذا year-- 64 00:03:28,430 --> 00:03:30,910 CS 50 آبل التطبيق فريق التطوير، التي 65 00:03:30,910 --> 00:03:34,680 سوف يسمح لك لتثبيت أي تطبيقات التي تقوم بإنشائها على أجهزة دائرة الرقابة الداخلية الخاصة بك. 66 00:03:34,680 --> 00:03:39,190 حتى تأخذ نظرة على هذا URL إذا كنت مهتما في القيام بذلك. 67 00:03:39,190 --> 00:03:41,450 >> حتى مجرد بضع أشياء عن سويفت نفسها. 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 ما في وسعنا لميناء سويفت. 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 لذلك وبعبارة أخرى، يمكن استخدامه في كل أنواع السياقات، من شركة أبل ووتش 80 00:04:19,480 --> 00:04:26,290 الى اي فون كل وسيلة تصل إلى OS X، و حتى بعض الخوادم، وحتى بعض البرمجة. 81 00:04:26,290 --> 00:04:28,400 ولكن سنرى أن دعم للبرمجة 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 على ماك أو اي فون الخاص بك. 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 يحدث عندما نظرتم في برنامج سويفت 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 هو بصراحة للتو من أبل قدمت وثائق للسويفت. 97 00:05:14,700 --> 00:05:16,930 هناك الكثير من واجهات برمجة التطبيقات المتوفرة. 98 00:05:16,930 --> 00:05:21,170 وهذا هو قاعدة المنزل جيدة بالنسبة لك للبحث عن الأمور المحددة التي 99 00:05:21,170 --> 00:05:23,020 تريد أن تفعل مع API التي تنطوي على دائرة الرقابة الداخلية. 100 00:05:23,020 --> 00:05:26,350 إذا كنت ترغب في استخدام الكاميرا ل سبيل المثال، يمكنك البدء في النظر هنا، 101 00:05:26,350 --> 00:05:32,540 وأيضا استخدام غوغل والمكدس تجاوز كما تفعل عادة. 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 هذا هو الملف مرحبا العالمي للسويفت. 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 لاحظ أنه لا يوجد كثافة العمليات الرئيسية. 116 00:06:07,010 --> 00:06:10,392 هناك أيا من الغبار المتراكم تحت السرير التي أجريناها مع C. 117 00:06:10,392 --> 00:06:15,020 عندما نستخدم سويفت في هذا السبيل، الذي هو مكتوب فقط في ملف نصي 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 وبأنني كسكودي المثبتة مسبقا على هذا الجهاز من أجل هذا 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 1.swift swiftc. 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 لدينا، لدينا تطبيق مرحبا العالمي إلى حد ما. 130 00:06:51,090 --> 00:06:54,690 >> لاحظ الشيء الآخر كما كذلك هو أن افتراضيا، 131 00:06:54,690 --> 00:07:00,090 لم يكن لدينا لإدخال و/ ن لطباعة سطر جديد. 132 00:07:00,090 --> 00:07:05,315 بشكل افتراضي، وظيفة الطباعة في سوف سويفت طباعة سطر جديد بالنسبة لك. 133 00:07:05,315 --> 00:07:09,284 يمكنك تمرير اختياري إضافي المعلمة ليقول لا للقيام بذلك. 134 00:07:09,284 --> 00:07:10,950 ولكن جوجل لمزيد من المعلومات حول ذلك. 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 واحد أريد أن اقول لكم حول الأول هو هذا التعريف اسمحوا. 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 ولكن باستخدام هذا اسمحوا الكلمة، ما نقوله 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 >> ثم يمكننا استخدام سلسلة الاستيفاء لتغليف ذلك ضمن سلسلة. 160 00:08:32,460 --> 00:08:35,200 حتى يمكننا أن نرى في هذا خط الطباعة، طباعة مرحبا، 161 00:08:35,200 --> 00:08:38,950 ثم استخدام مائل أقواس مفتوحة، ثم اسم المتغير بلدي، 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 أريد أن استخدام مترجم السريع، الذي 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 وهذا لأن مترجم، يمكن سويفت 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 هنا، فهو يعرف أنه هو السلسلة. 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-- السماح يساوي سلسلة اسم القولون 187 00:10:01,590 --> 00:10:05,530 دان، وهو ما يعني في هذه الحالة نحن الذهاب الى تعريف دعا اسم ثابت. 188 00:10:05,530 --> 00:10:07,150 انها سوف تكون من نوع سلسلة. 189 00:10:07,150 --> 00:10:10,550 والقيمة ستكون دان. 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-- نحن استخدام الكلمة فار بدلا من السماح. 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 انها سوف تكون سلسلة. 199 00:10:38,800 --> 00:10:43,030 ونحن في طريقنا لسلسلة ثم سلسلتين معا، سلسلة مرحبا، 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 >> في سويفت، لديك ل تحديد نوع البيانات 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 ثم أحتاج أن أقول ما سويفت أتوقع نوع البيانات إلى أن يكون. 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 ترغب في محاولة لسلسلة سلسلة مع هذا صحيح، 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 goosey loosey مع الفرز من أنواع. 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 >> في هذه الحالة، سويفت صارمة للغاية حول أنواع 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 >> لذلك وبعبارة أخرى، فإن حقيقة أن سويفت يتم كتابتها بقوة 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 سلسلة وظيفة، 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 >> الآن هناك مجموعة متنوعة من البيانات الأنواع التي يمكن أن نستخدمها في سويفت. 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-- قابلة للتغيير نحن لن تستخدم الكلمة هوادة. 274 00:14:45,350 --> 00:14:49,620 وهذا يعني أننا يمكن تعديل ثم محتويات هذه المجموعة. 275 00:14:49,620 --> 00:14:53,420 هو من نوع مصفوفة كثافة العمليات، ونستطيع أن نقول أن 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 هذا هو مجرد نحوي صغيرة لطيفة السكر الذي يوفر سويفت بالنسبة لنا. 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 ولدينا، في سويفت، فكرة لحلقة 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 حيث سيكون لديك بعض مؤشر متغير، تعيين يساوي 0 في البداية، 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 ومرة أخرى، لأن سويفت يتم كتابتها بقوة، 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 ولذا فإننا سوف ثم التلبيس صراحة المبلغ الذي قمنا المحسوبة أعلاه 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 وسويفت بشكل عام جيد جدا حول القدرة على الاستدلال على أنواع. 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 واثنين من الأنواع الأخرى التي هي فريدة من نوعها لسويفت أن لديك لا 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 يمكنك تحديد ذلك مع كلمة جبان وظيفة، ومن ثم اسم الدالة، 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 تعرف مع الكلمة اسمحوا ضمنية، وهو ما يعني أنني لا يمكن تعديل هذا 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 وفار الكلمة هنا. 395 00:21:52,070 --> 00:21:56,832 ولكن هذا هو مسكتك أن لدينا الناس لاحظت فعلت في الماضي 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 OK، فكيف نحن ذاهبون لحساب هذا المعدل؟ 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 في كل مرة أن لبالتكرار الحلقة. 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 OK، أي الأسئلة؟ 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 أنا يمكن أن يحدد نوع الإرجاع لكثافة العمليات، والعودة 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 أنواع هنا، ما نوع هذه التسديدة هو، ونحن بحاجة إلى أن تكون صريحة مع سويفت 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 ولكن هناك-- 480 00:26:11,050 --> 00:26:12,560 >> الحضور: (غير مسموع) السهم؟ 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 إلى بعض الأمور المثيرة للاهتمام وهذا ما يحدث في سويفت. 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، وهاهنا لمعرفة ما تقوم به فعلا. 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 حتى في هذه الحالة، أنا مجرد حلقات على كل وسائط سطر الأوامر. 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 هذه الحجة إلى عدد صحيح من قبل إجراء عملية التلبيس صريح، 512 00:28:07,620 --> 00:28:12,310 لأنه، على المدخلات، سلسلة وليس في الواقع صحيح. 513 00:28:12,310 --> 00:28:18,140 >> ولكن هذا هو نوع من جملة غريبة، إذا الصف السماح يساوي الباحث (حجة). 514 00:28:18,140 --> 00:28:21,120 ما يحدث في الواقع هنا هو غاية 515 00:28:21,120 --> 00:28:24,390 من المهم أن باستخدام سويفت. 516 00:28:24,390 --> 00:28:27,610 هذا هو استخدام ما هو دعا نوع اختياري. 517 00:28:27,610 --> 00:28:34,790 >> حتى هذه الوظيفة، كثافة العمليات (حجة)، يعود ليس فقط عدد صحيح، ولكن العائدات 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 وهذا جزء من بيان إذا، الجزء العلوي من بيان إذا 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 >> الحضور: النيل هو N-I-L؟ 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: لا شيء هو N-I-L، نعم. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> لذلك هذا هو ربما واحدة من اصعب الامور حول سويفت، 549 00:30:20,310 --> 00:30:23,690 وخصوصا عندما كنت في الأعشاب على تطبيق iOS 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 كما تحاول كتابة التطبيق في سويفت. 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 واحد منهم هو القواميس، والتي هي تشبه الى حد بعيد قواميس بيثون. 571 00:31:41,290 --> 00:31:48,270 انها تشبه إلى حد ما في جدول تجزئة جيم هو أساسا تعيين مفاتيح 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 ثم في الامتحان، I حسنا فعل حقا وحصلت على 30. 584 00:32:24,630 --> 00:32:27,180 وعفوا، أنا ضربت الفضاء هنا. 585 00:32:27,180 --> 00:32:30,940 >> عندما كنت هاهنا، يمكنك ان ترى ينفذ بعض العمليات الحسابية عليها. 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 هذا ليس شيئا ستستخدمها في دائرة الرقابة الداخلية التطبيق. 595 00:32:56,530 --> 00:32:59,750 هذا هو فقط، في هذه الحالة، مع وسيطة سطر الأوامر. 596 00:32:59,750 --> 00:33:01,990 التالي سنبدأ التحرك نحو كسكودي. 597 00:33:01,990 --> 00:33:07,760 ولكن هذا هو محدد لأمر برنامج نمط الخط في سويفت. 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 تذكرون أن كان لي أن قائمة من pset1 items--، 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 إلى 2 سويفت. 612 00:34:06,939 --> 00:34:08,730 هناك تستخدم ليكون الثعبان style-- إذا كنت 613 00:34:08,730 --> 00:34:13,219 دراية Python-- بايثون أسلوب الانضمام الطريقة على السلاسل. 614 00:34:13,219 --> 00:34:15,699 ولكن هذا لم يعد الحال في سويفت 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 وأنا الآن قائلا عن هذه الكلمات، ولكن هذا الواقع لا تستخدم اخليارات. 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 ولكن في الحقيقة ما كنت تريد الذهاب أن يكون التعامل مع غير كسكودي. 638 00:35:39,470 --> 00:35:43,720 واحدة من أشياء لطيفة عن كسكودي هو، وعلى وجه التحديد في سويفت، 639 00:35:43,720 --> 00:35:47,450 هو أن لدينا هذا شيء يسمى الملعب. 640 00:35:47,450 --> 00:35:51,470 والملعب هو لا على الإطلاق التطبيق دائرة الرقابة الداخلية. 641 00:35:51,470 --> 00:35:54,751 ولكنه يسمح لك تجربة مع سويفت بطريقة سهلة جدا. 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 أن سويفت تعمل فيها، وذلك هذا هو فكرة الإغلاق. 653 00:36:34,020 --> 00:36:36,960 وربما كنت قد رأيت هذا قليلا في جافا سكريبت. 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 انها من نوع مزدوجة. 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 نقطة نقطة، 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 >> حتى في هذه الحالة أنا نتيجة تشغيل مرات اكس مرتين، والتي في جوهرها 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 من المهم جدا بالنسبة سويفت. 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 انها تسير على قبول دعت المعلمة ص من نوع 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 نحن بصدد إنشاء وظيفة جديدة دعا exponentiator، 716 00:40:00,760 --> 00:40:02,900 ولكن لا يهم ما هو عليه. 717 00:40:02,900 --> 00:40:06,410 >> لاحظ أن هذا له قيمة مدخلات السينية. 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 وعند هذه النقطة، ونحن العودة exponentiator. 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 لذ، وهو ما يعني أن هذه القيمة ذ في هذه الوظيفة exponentiator 731 00:40:55,130 --> 00:40:56,410 سوف تكون تلك القيمة 2. 732 00:40:56,410 --> 00:41:01,290 ولكن أعود هذا وظيفة exponentiator. 733 00:41:01,290 --> 00:41:05,900 >> لذلك تلاحظ ما يقول سويفت I خلقت في هذه الحالة. 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 exponentiator، ولكن هذه القيمة يتم تغليف ذ داخل منه. 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 انها قوية الاشياء حقا أننا نرى الكثير في جافا سكريبت وبعض اللغات الأخرى. 759 00:42:33,570 --> 00:42:37,160 إلا أنه من المهم حقا أن فهم واجهات برمجة التطبيقات وكذلك 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) يعني أننا ذاهبون أن يكون لها exponentiator من 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 مثل لماذا لا يمكنني تحديد هذا وظيفة تسمى exponentiator 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 وحتى في هذه الحالة، في 7B، يمكن أن نجد بالضبط. 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 انها تتوقع هذه المدخلات مزدوجة. 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 لم يكن لديك فعلا اسما، في حين قبل كانت تسمى exponentiator. 809 00:44:57,030 --> 00:45:00,229 ولكن كما رأينا، فقط حقا لم يشر إلى exponentiator 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 إلى هنا أننا نتقبل المدخلات التي هي من نوع مزدوج 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 ارمينداريز: هذا صحيح. 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 >> الحضور: هل بيرل أو شيء يكون هذه علامة الدولار، الدولار 0 هناك؟ 850 00:47:11,119 --> 00:47:12,702 DAN ارمينداريز: هل الذي، أنا آسف؟ 851 00:47:12,702 --> 00:47:15,360 الحضور: هل لدى بيرل هذا الدولار 0، الدولار 1-- 852 00:47:15,360 --> 00:47:17,318 DAN ارمينداريز: أنا لا مألوفة جدا مع بيرل، 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 في الواقع، سويفت يستعير الكثير من الميزات مثل هذا 856 00:47:28,240 --> 00:47:29,489 من الكثير من لغات أخرى. 857 00:47:29,489 --> 00:47:32,380 نرى تلميحات من بيثون في ذلك. 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 هذا واحد من لطيفة أشياء عن سويفت 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 سويفت لديه exponentiating وظيفة بنيت فيها 867 00:48:02,120 --> 00:48:04,660 إذا كنت استيراد داروين، الذي هو مجرد مكتبة 868 00:48:04,660 --> 00:48:09,680 ميزات هذه الوظيفة دعا الأسرى، الآن يمكنني تبسيط قوتي وظيفة 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 هذا هو من نوع مزدوجة. 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 >> وهذا هو أسلوب الدقيق الذي جدا، جدا سائدة في سويفت، 878 00:48:39,990 --> 00:48:40,790 في كل مكان. 879 00:48:40,790 --> 00:48:43,190 ونحن في طريقنا لرؤية هذا كل الوقت في سويفت. 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 ولكن يمكننا أن نذهب حتى جنونا مع سويفت. 895 00:49:27,455 --> 00:49:28,560 هل انت مستعد؟ 896 00:49:28,560 --> 00:49:29,930 OK، وهذا شيء عظيم. 897 00:49:29,930 --> 00:49:35,310 >> الآن لدينا بالفعل القدرة ل، في سويفت، بسبب الطريقة حدات 898 00:49:35,310 --> 00:49:39,650 وكيف بروتوكول يقوم هو، ل تعريف لدينا مشغلي ينقط الخاصة. 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 ولكن يمكنني، في سويفت، تعريف جديد المشغل أن يفعل بالضبط. 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 ولكننا تحديد هذا أقحم المشغل، **، والتي سوف تسمح لنا، 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 >> وحتى الآن كل من I المفاجئ خلقت البسط الجديد. 909 00:50:24,850 --> 00:50:29,490 حتى 2 ** 3 يعني 2 إلى قوة ثالثة. 910 00:50:29,490 --> 00:50:34,420 [اعتبارها تهب SOUND] ذلك نفسها ينبغي أن تكون مثل، 911 00:50:34,420 --> 00:50:37,960 OK، المسمار C. انا ذاهب سريعة على طول الطريق. 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 ولكن لا يزال، فإنه يدل على الكثير من قوة سويفت 918 00:50:49,710 --> 00:50:54,050 والسبب في هذا هو في الواقع حقا رائع جدا. 919 00:50:54,050 --> 00:50:55,832 OK، نعم؟ 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، مثل مخبأة في مكان ما في سويفت، 923 00:51:06,040 --> 00:51:12,210 مثل واحد غامضة أنك قد لا يكون له مثيل من قبل. 924 00:51:12,210 --> 00:51:15,050 >> DAN ارمينداريز: حتى إذا كنت تحاول لتعريف المشغلين الخاصة بك، 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 >> ويمكن أن تفعل الشيء نفسه شيء لالتكعيب ذلك، 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 في متغير يسمى و الذي يجري لنلقي مزدوجة والعودة مزدوجة. 969 00:53:40,990 --> 00:53:43,320 وإخراج كاملة هذه الوظيفة كامل 970 00:53:43,320 --> 00:53:47,310 دعا معين هو الذهاب الى عودة مجموعة تسمى مزدوجة. 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 نرى الكثير من الوظائف التي تستخدم في سويفت 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 ونحن في طريقنا لتمرير ذلك مجموعة إلى مخطط لدينا. 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 >> حتى هذه الحالة التي حددناها لدينا استدعاء الدالة الخاصة معين. 999 00:55:11,000 --> 00:55:15,370 ولكن هذا الشيء بالضبط هو، في الواقع، في صلب سويفت. 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 ارمينداريز: الحق. 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 في هذه الحالة، كنا سواء تربيع، أو كنا التكعيب ذلك، 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 إذا كان ذلك ترجع كاذبة، ويلقي بعيدا هذا البند. 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 I أداء هذا المرشح العملية على كل واحد من هؤلاء. 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 الأمور لأن هذا هو أن شائعة الشيء الذي سوف نرى في سويفت جميلة 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 مفاتيح هي في الواقع قوية في سويفت، أعني تماما مثل مجنون، مجنون قوية. 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 وتظهر لك مثالا محددا لكيفية نحن يمكن أن تخلق في دائرة الرقابة الداخلية التطبيق باستخدام سويفت. 1054 00:58:46,940 --> 00:58:49,040 حتى عندما كنت تفعل هذا، سيكون لديك لاتخاذ 1055 00:58:49,040 --> 00:58:51,990 نظرة at-- على أبل الوثائق، فإنها 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 من خلال كل الخطوات بالضبط ما ل انقر على لإنشاء تطبيق دائرة الرقابة الداخلية. 1059 00:59:04,110 --> 00:59:07,290 >> ولكن هنا لدينا هذا التطبيق دائرة الرقابة الداخلية. 1060 00:59:07,290 --> 00:59:10,960 وانها التطبيق بسيطة جدا حقا. 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 لي ثم دورة من خلال، على بلدي التطبيق، صور من خادم الويب الخاص بي. 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 في تطبيق دائرة الرقابة الداخلية الفعلي. 1071 00:59:47,820 --> 00:59:53,140 وبعبارة أخرى، ربما يكون واحدا من الأشياء التي كنت تريد أن تفعل 1072 00:59:53,140 --> 00:59:56,340 غير أن يكون هناك تطبيق دائرة الرقابة الداخلية التي يمكن سحب البيانات من الإنترنت 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 >> لذلك هناك الكثير مما يمكن قوله حول كيفية القيام تطوير دائرة الرقابة الداخلية الفعلية. 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 التي من المتوقع من قبل دائرة الرقابة الداخلية، في الواقع هذا يشعر السحرية قليلا. 1083 01:00:36,530 --> 01:00:40,300 ولكن عندما تقوم بإنشاء التطبيق دائرة الرقابة الداخلية، هناك 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 ولكن أنا أشجعكم أن ننظر إلى ربما الندوة دائرة الرقابة الداخلية الأخرى، ولكن أيضا بعض 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 غير أن أقواس حول تعبير منطقي اختيارية. 1096 01:01:24,860 --> 01:01:30,800 ولكن الأقواس المعقوفة ليست اختيارية، مهما كانت قليلة أو كثيرة الأسطر من التعليمات البرمجية 1097 01:01:30,800 --> 01:01:32,360 لديك في حال بيان. 1098 01:01:32,360 --> 01:01:38,670 لا يمكن أن يكون لها إذا كانت تصريحات بدون أقواس مجعد في سويفت. 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 إذا البيان. 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 لتظهر لك حول سويفت أن هو جديد لسويفت 2.0 مقارنة 1108 01:02:02,640 --> 01:02:08,460 إلى الإصدارات القديمة من سويفت، وهو يلي. 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 أن تكون قيد التشغيل على بلدي IDE CS50. 1113 01:02:26,310 --> 01:02:28,580 أنا بدأت للتو أباتشي، وضع ملف 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 كنت تفعل بعض تطوير التطبيق دائرة الرقابة الداخلية. 1118 01:02:43,140 --> 01:02:49,690 >> لاحظ هنا أن هناك هذا غير عادية ودعا بناء بنائي الحراسة. 1119 01:02:49,690 --> 01:02:53,530 وحقا كل هذا هو في سويفت هو وسيلة للتحقق من 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 ولكن تأكد من أنها واقع الحال أن عنوان الموقع 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 سوف تسمح لك للمضي قدما رابط بعد أن تم تعريفها بشكل صحيح. 1132 01:03:46,110 --> 01:03:48,830 ولكن إذا كان هذا هو الحال الذي لم يتم تعريف رابط صحيح، 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 ارمينداريز: انه نوع من مثل إذا ثم آخر، نعم، 1139 01:04:07,130 --> 01:04:14,200 إلا أن هذا العنوان هو ثم تعرف على كل شيء دون هذا. 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 ارمينداريز: هذا هو وثيق. 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 ارمينداريز: إذا كان الخطأ ليست معدومة، بحيث 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 نظرة على بعض من الدروس محددة لتطوير دائرة الرقابة الداخلية مع سويفت، 1165 01:05:54,490 --> 01:05:57,481 خصوصا إذا ذهبت إلى المطور page-- التفاح على شبكة الإنترنت 1166 01:05:57,481 --> 01:05:59,980 لديهم الكثير من الخير حقا دروس للحصول على انك بدأته. 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