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 توسعه نرم افزار با سویفت. 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 ما شروع به انجام برخی از عمومی نحو با زبان سویفت، 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 با سویفت، و یا واقعا هر گونه توسعه برنامه IOS، 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 که ما می رویم تا با استفاده از امروز، یک نسخه از سیستم عامل نسبتا جدید 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 که دارای آخرین نسخه سویفت است که سویفت 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 به سویفت 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 به شما اجازه نصب هر برنامه که شما را در دستگاه های 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 و بنابراین ما خواهید دید که هستند بسیاری از takeaways وجود دارد 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 مربوط به سیستم عامل iOS. 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 و که من در حال حاضر نصب 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 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 ما به ورودی ندارد A / N برای چاپ یک خط جدید. 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-- ما استفاده از کلمه کلیدی 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 آن را به یک رشته است. 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 >> بنابراین این خوب به دلیل این است است که تا حدودی مانند که ما پی اچ پی 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 احمق 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 و سپس با استفاده الحاق رشته اپراتور برای تغییر متغیر label ما، 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 این آرایه از نوع 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 شما می توانید سبک پی اچ پی نیست که در آن شما فقط به وضوح تعریف، 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 بنابراین ما پس از آن به صراحت 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 و سریع است به طور کلی خیلی خوب در مورد قادر به استنباط انواع است. 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-- نام GradeBook را. 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 متغیر GradeBook را در اینجا. 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 اما این یک مارپیچ که ما این است مردم متوجه در گذشته انجام داده اند 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 اگر GradeBook را خالی است، که در این مورد 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 است که GradeBook را، و این بار رفتن به بازگشت یک نوع دو برابر شود. 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 خوب، اگر GradeBook را خالی است، و سپس ما 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 برای محاسبه متوسط ​​اگر ما یک GradeBook را خالی می باشد. 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 با مشخص برای درجه در GradeBook را، آنچه ما می گویند 433 00:23:56,200 --> 00:24:00,560 این است که ما در حال رفتن به طور ضمنی ثابت جدید به نام ایجاد 434 00:24:00,560 --> 00:24:05,180 درجه است که رفتن به نمایندگی هر مورد منحصر به فرد در GradeBook را 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 برای اولین بار مورد در GradeBook را. 438 00:24:09,800 --> 00:24:12,300 بار دوم آن خواهید بود مورد دوم، به طوری که در تاریخ و غیره 439 00:24:12,300 --> 00:24:15,970 تا زمانی که GradeBook را دارد خود را از عناصر خسته. 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 من می توانید نوع بازگشت به مجموعه به 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 انواع اینجا، چه نوع این در واقع است، ما باید صریح و روشن با سویفت 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 >> مخاطبان: [نامفهوم] فلش؟ 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 آن آنها وارد به یک GradeBook را. 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 که استدلال به یک عدد صحیح توسط انجام یک Typecast به صریح و روشن، 512 00:28:07,620 --> 00:28:12,310 دلیل آن، در ورودی، یک رشته است و نه در واقع یک عدد صحیح. 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 با استفاده از خود را سویفت مهم است. 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 قسمت بالای اگر بیانیه 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 و این دستور if و سپس شکست. 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 >> رسید از Nil 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 و آن است که توسط NIL نشان. 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 این تا حدودی شبیه به یک جدول هش در 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 >> وقتی که من ضربه وارد کنید، شما می توانید ببینید آن را انجام برخی محاسبات. 586 00:32:30,940 --> 00:32:33,740 این گزارش می گوید GradeBook را سه است نمرات، pset1، pset0، امتحان. 587 00:32:33,740 --> 00:32:36,120 و GradeBook را دارد این طور متوسط ​​است. 588 00:32:36,120 --> 00:32:38,370 پس دوباره، ما در حال کار با این ایده GradeBook را، 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 استفاده خواهد کرد. 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 اما این خاص به یک فرمان است برنامه سبک خط در سویفت. 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 با در نظر گرفتن GradeBook را، که یک فرهنگ لغت است که کلید ها و مقادیر. 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 >> و این یکی از چیزهایی است که است از Swift 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 چه می شود اگر GradeBook را در واقع هیچ ارزش ها در آن است؟ 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 در غیر این صورت ما باز خواهد گشت NIL، گفت که این 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 متعلق است، و به طور خاص در سویفت، 639 00:35:43,720 --> 00:35:47,450 است که ما باید این چیزی به نام یک زمین بازی. 640 00:35:47,450 --> 00:35:51,470 و یک زمین بازی است در همه برنامه های iOS نیست. 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 آن را به یک متغیر به نام x. 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 >> بنابراین در این مورد من در حال اجرا در نتیجه زمان 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 است بسیار مهم برای سویفت. 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 ما در حال ایجاد یک تابع جدید نام exponentiator، 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 و در این نقطه، ما بازگشت 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 Y، به این معنی که این مقدار Y در این تابع 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 >> بنابراین متوجه آنچه سویفت می گوید من در این مورد ایجاد کرده اند. 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، اما این مقدار 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 مانند من می توانم بگویم، OK، و در حال حاضر من می خواهم برای ایجاد یک تابع جدید، 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 در اینجا است که ما در حال پذیرش ورودی این است که از نوع 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 >> مخاطبان: آیا پرل یا چیزی این علامت دلار، دلار در 0 وجود دارد؟ 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz به: آیا که، من متاسفم. 851 00:47:12,702 --> 00:47:15,360 مخاطبان: آیا پرل اند این دلار 0، دلار 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz به: من نه بیش از حد آشنا با پرل، 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 این تعریف از نوع به نظر می رسد از اوکامی آمده است. 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 سویفت است 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 $ است که از نوع double اشاره شده است. 875 00:48:29,320 --> 00:48:32,680 این است که برای بازگشت یک نوع دو. 876 00:48:32,680 --> 00:48:35,760 اما از دستور return اکنون ضمنی است. 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 خوب، این بزرگ است. 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 >> و بنابراین در حال حاضر همه از یک من ناگهانی کسر جدید ایجاد کرده اند. 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 OK، پیچ C. من قصد دارم 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 اما هنوز هم، آن را نشان می دهد بسیاری از قدرت سویفت 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 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 >> و ما می توانیم همین کار را چیزی که برای گفتگوی آن، 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 به نام آیفون است که به بازگشت آرایه ای به نام دو برابر شود. 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 و ما قصد داریم تا پس از آن Square تمام از آن اعداد 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 از طریق یک تابع 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 در این مورد، ما هم شد تربیع آن، و یا ما آن را گفتگوی شد، 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 >> به عبارت دیگر، این است همان ایده، از GradeBook را. 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 همه چیز به دلیل این است که مشترک چیزی که شما در سویفت بسیار ببینید 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 و یک مثال خاص از اینکه چگونه شما را نشان می دهد ما می توانیم در برنامه های iOS با استفاده از سویفت ایجاد کنید. 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 از طریق تمام مراحل از آنچه که دقیقا به با کلیک بر روی ایجاد یک نرم افزار IOS. 1059 00:59:04,110 --> 00:59:07,290 >> اما در اینجا ما باید این برنامه های iOS. 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 به یک برنامه واقعی 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 این است که پرانتز در اطراف عبارت بولی اختیاری هستند. 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 شما نمی توانید یک دستور if دارند بدون آکولاد در سویفت. 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 شما در حال انجام برخی از توسعه برنامه های iOS. 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 اما اطمینان حاصل شود که آن را در واقع این مورد که 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 با سویفت، 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