>> [موسیقی]
>> DAN AMRMENDARIZ: هر کس، به سمینار CS50 استقبال،
در iOS توسعه نرم افزار با سویفت.
من دن Armendariz به هستم، و من یک معلم هستم علوم کامپیوتر اینجا در دانشگاه هاروارد.
>> و یک ساعت بعد است برای رفتن به یک تور گردباد از مسائل به اندازه
در مورد این موضوع که ما می توانیم مناسب است.
من همه از کد منبع ارسال که شما امروز آنلاین را ببینید.
ما نمی ممکن است قادر به در واقع بیش از همه چیز به
که من که من نشان دادن شما در این ساعت است.
اما حداقل امیدوارم از طریق نظر کد منبع،
شما قادر خواهید بود به تلاش برای کشف کردن آنچه دقیقا برای کسانی که چیز اتفاق می افتد
که ما کاملا به دریافت کنید.
>> به طور کلی، ساختار بحث امروز به شرح زیر است.
ما شروع به انجام برخی از عمومی نحو با زبان سویفت،
رفتن به برخی از پیشرفته تر نحو زبان سویفت.
از آنجا که زبان است واقعا مدرن و آن را
تا به بسیاری از سطح بالا ویژگی های، چیزهایی که ما ندارد
در C سراسر CS50 دیده می شود، و یا حتی برخی از زبان های دیگر
که ما شروع به با استفاده از در CS50 مانند PHP،
بنابراین من می خواهم به باید سعی کنید به معرفی نیز برخی از موضوعاتی که
به زبان سطح بالاتر مربوط که شما ممکن است در عمق در CS50 را مشاهده کنید،
اما شما در بعد را ببینید کلاس های علوم کامپیوتر است.
پس از آن برای رفتن به یک محکم ساعت بسته بندی شده.
و لطفا به من اجازه دهید اگر شما هر گونه سوال.
بنابراین اگر شما علاقه مند هستید در انجام توسعه
با سویفت، و یا واقعا هر گونه توسعه برنامه IOS،
یک زن و شوهر از الزامات وجود دارد.
اول از همه، شما باید با استفاده از مک، در حال اجرا در نمونه
که ما می رویم تا با استفاده از امروز، یک نسخه از سیستم عامل نسبتا جدید
X. در این مورد، من در حال اجرا X 10.5.
شما می توانید در حال اجرا 10.11 اگر شما می خواهید.
اما همه چیز که شما در حال رفتن به ببینید که شامل Xcode متعلق 7 و بعد،
که دارای آخرین نسخه سویفت است که سویفت 2.0.
این در واقع خیلی تمایز مهم است.
بسیاری از نحو است بسیار قابل توجهی تغییر
در برخی موارد از Swift 1.0، که در سال گذشته منتشر شد،
به سویفت 2.0، که فقط بیرون آمد این سقوط.
بنابراین ما قصد داریم به نشان می دهد سویفت 2.0.
بسیاری از چیزهایی که شما برای آنلاین جستجو
هنگامی که شما تلاش برای به دست آوردن اضافی اطلاعات در مورد انواع چیزهایی،
شما ممکن است به صراحت می خواهید به جستجو برای سویفت 2
و نه تنها ساده و قدیمی سویفت به مطمئن شوید که شما دریافت نحو درست.
>> در واقع، این است به طور کلی درست است.
یک مقدار سریع توسعه وجود دارد اتفاق می افتد در زبان سویفت
زمانی که اپل آن را منتشر شد، من فکر می کنم چه، آن را کمی بیش از یک سال بوده است
اکنون.
و همه چیز تغییر کرده به طور چشمگیری در آن زمان.
و پس از انجام نا امید نمی شود اگر، زمانی که شما به دنبال در اطراف
برای موضوعات در مورد سویفت و یا چگونه برای به انجام رساندن چیزی با استفاده از برخی از مثال کد
یا چیزی است که آن را نمی کند در واقع در سویفت 2.0 کار می کنند.
اطمینان حاصل کنید که شما به دنبال به طور خاص برای آن نسخه
سعی کنید به حداقل رساندن اثرات مختلف نسخه و کسانی که چیزها.
>> من سعی می کنم به این نکته اشاره فقط برخی از چیزهایی که به نسخه های قدیمی تر متفاوت است.
اما آن چیزی به مراقب است.
که احتمالا برای رفتن به یکی از بزرگترین سردرد
که شما با سویفت دارند، یافتن به عنوان مثال کد است که مسن تر، حتی اگر فقط
توسط چند ماه، تلاش برای استفاده از آن را در پروژه مدرن تر خود را.
و آن را فقط به سادگی کار نمی کند.
شما در حال گرفتن خطاهای کامپایلر، نحو اشتباهات، تمام انواع چیزهای دیوانه.
پس فقط بیمار با شود که، و شما امیدوارانه
یک تجربه بسیار خوب با کلی سویفت.
>> در حال حاضر واقع شما می توانید join-- و من امیدوارم که ما در واقع هنوز هم این این year-- دارند
اپل برنامه CS 50 تیم توسعه، که
به شما اجازه نصب هر برنامه که شما را در دستگاه های iOS خود را ایجاد کنید.
بنابراین یک نگاهی به این URL را اگر شما علاقه مند به انجام آن هستند.
>> بنابراین فقط چند همه چیز در مورد Swift است.
این زبان یک زبان وارد شده است.
اما شما ببینید که برخی از از ویژگی های که استفاده می کنیم
آن اجازه داده شود نیز در کمی استفاده می شود مثل یک تفسیر راه است.
>> بسیاری از نحو قرض گرفته است از C. آن بر اساس و در C. نوشته
و بنابراین ما خواهید دید که هستند بسیاری از takeaways وجود دارد
از دانش موجود خود را از C که ما می توانیم به پورت سویفت.
>> اما چیزهایی وجود دارد که آن را بسیار متفاوت از C.
آن است که بسیار به شدت تایپ.
مدیریت حافظه خودکار وجود دارد.
شما در حال رفتن به به استفاده از malloc و یا هر جای رایگان.
آن را برای عموم طراحی شده است.
بنابراین به عبارت دیگر، شما می توانید آن را در استفاده تمام انواع زمینه، از اپل دیده بان
به آی فون تمام راه را تا به OS X، و حتی برخی از سرویس دهنده ها، حتی برخی از برنامه نویسی.
اما خواهیم دید که پشتیبانی برای برنامه نویسی
است که هنوز کاملا وجود به عنوان آن را در زبان های دیگر است.
بنابراین به احتمال زیاد شما با استفاده از این به طور انحصاری برای توسعه
در مک و یا آی فون خود را خود را.
>> و آن را تا بسیاری از ویژگی های مدرن است.
و بسیاری از این چیزها چیزهایی که ما در حال رفتن به تلاش برای رسیدگی امروز،
بلکه مباحث ما که رک و پوست کنده، ما می توانیم کل دوره اختصاص.
در واقع، CS 51 است، که ترم بعد ارائه شده،
تمرکز زیادی در مورد این موضوع که در زیر توضیح داده.
بنابراین شما می توانید با دوره ترم کامل صرف درک این چیزها.
اما ما قصد داریم به تلاش از طریق آنها
حداقل به اندازه کافی که شما می توانید درک چه
که در زمانی که شما نگاه کنید در یک برنامه سویفت
و قادر به هک راه خود را از طریق آن برای پروژه نهایی.
>> در حال حاضر یکی از بهترین راه هایی که شما می توانید دریافت اطلاعات بیشتر در این
رک و پوست کنده است فقط از طریق اپل اسناد و مدارک برای سویفت ارائه شده است.
در بسیاری از رابط های برنامه کاربردی وجود دارد که در دسترس هستند.
و این پایگاه را به خانه برای شما خوب است برای، همه چیز خاص نگاه که شما
می خواهید با یک API مربوط به سیستم عامل iOS.
اگر شما می خواهید به استفاده از دوربین برای به عنوان مثال، شما می توانید شروع به دنبال در اینجا،
و همچنین گوگل و پشته استفاده سرریز به عنوان شما را به طور معمول.
>> هر گونه سوال در این قبل از ما در سمت راست پرش؟
خیلی خوب.
اجازه دهید در حرکت.
>> بنابراین برای اولین بار، من یک تعداد مثال فایل های.
و من قصد دارم به سعی کنید به گام از طریق آنها نسبتا به سرعت.
این فایل سلام جهان برای سویفت است.
این بسیار ساده است.
این نظرات راه بیشتر وجود دارد از کد واقعی وجود دارد.
توجه داشته باشید که کد واقعی است در پایین در خط 14.
این گزارش می گوید نسخه قابل چاپ.
و سپس آن را فراخوانی تابع است.
ما در حال عبور به آن رشته به نام سلام CS50.
توجه داشته باشید که هیچ سمی کالن وجود دارد.
توجه داشته باشید که هیچ اصلی اعضای هیات وجود دارد.
هیچ یک از وجود دارد فایلهای بیهوده است که ما با C. حال
هنگامی که ما با استفاده از سویفت در این راه، است که فقط در یک فایل متنی نوشته شده است
و ذخیره شده بر روی کامپیوتر من، پس از آن من می توانم آن را کامپایل و اجرا کنید.
>> توجه داشته باشید که در اینجا من با استفاده از IDE CS50 نیست.
این فرض که من در حال اجرا و که من در OS X هستم،
و که من در حال حاضر نصب Xcode متعلق به در این دستگاه به منظور برای این
در واقع تابع.
اما این فقط یک فایل متنی معمولی است که ما پس از کامپایل می توانید و ویرایش کنید.
بنابراین بیایید ببینید که چگونه این در واقع کار می کند.
اگر من می خواهم به آن را کامپایل؟
1.swift swiftc.
پس از یک یا دو لحظه، آن را خواهید دید که ما در حال حاضر
این را به یک فایل به نام 1 وارد شده است.
و در حال حاضر ما CS50 ما چاپ، نرم افزار سلام جهان ما و نه.
>> توجه داشته باشید یک چیز دیگر به عنوان خوب است که به طور پیش فرض،
ما به ورودی ندارد A / N برای چاپ یک خط جدید.
به طور پیش فرض، تابع چاپ در سویفت یک خط جدید برای شما چاپ کنید.
شما می توانید اضافی اختیاری عبور پارامتر به آن را به انجام این کار نیست.
اما گوگل برای کسب اطلاعات بیشتر بر روی آن.
به طور پیش فرض، آن را به خط چاپ را انجام دهد.
>> خوب، پس اجازه دهید در حرکت سپس به برخی چیزهای دیگر.
پس چگونه می تواند ما در واقع متغیرهای تعریف؟
ما می توانیم انجام این کار با استفاده از یکی از دو روش.
و یکی که من می خواهم به شما بگویم در مورد اول این تعریف اجازه است.
و این مهم است چون به طور موثر
آنچه که ما در حال انجام است تعریف یک ثابت.
ما می رویم به ایجاد یک متغیر، یا به جای یک نام نام ثابت،
ارائه به برخی از آن data-- در این مورد، رشته دن.
اما با استفاده از این اجازه کلید واژه، ما می گویند
که این variable-- یا دوباره constant-- نام
نام و نام خانوادگی است هرگز به تغییر کند.
آن را به تغییر ناپذیر در سراسر مدت زمان این برنامه
و یا در طول مدت زمان زمینه
که آن متغیر در دسترس است.
>> این است که واقعا مهم است که وقتی شما برخی اطلاعات است که نه
رفتن به تغییر در برنامه خود، و شما نمونه های مختلف را ببینید
در مورد زمانی که ما می خواهیم به استفاده از اجازه دهید در مقابل نحو دیگر،
این مهم است که شما با استفاده اجازه دهید هر کجا که ممکن است به دلیل این اطلاع
زبان که آن را رفتن به تغییر،
و آن را در واقع می توانید انجام بسیاری از بهینه سازی
به منظور بهبود سرعت و ایمنی برنامه خود را.
و با ایمنی، منظور من اجازه نمی تصادف آن را با خطاهای دیوانه
که ما ممکن است عادت به دیدن در C.
>> پس ما می توانیم الحاق رشته استفاده برای کپسوله کردن این در یک رشته است.
بنابراین ما می توانیم در این دید خط چاپ، چاپ سلام،
و سپس با استفاده از بک اسلش پرانتز باز، و سپس نام متغیر من،
در این ثابت مورد، بستن پرانتز.
من اساسا سپس قرار دادن محتویات این متغیر به نام نام
داخل رشته و سپس چاپ نتیجه وجود دارد.
>> یک تغییر دیگر به این تصویر وجود دارد که این است که من، در بالا بسیار،
را در یک خط ابتکار، که اساسا فقط مشخص
که من می خواهم به استفاده از مترجم سویفت، که
بدان معنی است که من دیگر به کامپایل برنامه های ویژه.
من فقط می تواند آن را مانند اسکریپت خود را اجرا کنید.
اما این، در این مورد، در پشت صحنه در حال تدوین است و پس از آن
در حال اجرا.
آن را فقط به ما نامرئی بود.
>> خوب، پس اجازه دهید در حرکت.
پس یک ذره از حیله گری وجود دارد که درست قبل از اتفاق افتاده است.
من به شما که من نشان داد می تواند یک ثابت تعریف کنیم.
و من می توانم برخی از داده ها را به انجام آن فراهم می کند.
اما در این مورد، توجه کنید که من نمی در واقع نوع داده را مشخص
که آن است.
و این به این دلیل که کامپایلر، سویفت می توانید
پی بردن به نوع داده ها فقط بر اساس بر روی داده است که من به آن قرار داده است.
از آنجا که آن می داند که با ارزیابی این متغیر در اینجا، این حق داده
در اینجا، آن می داند که آن یک رشته است.
و بنابراین این نام ثابت است بنابراین برای رفتن به یک رشته است.
>> اما ما همچنین می توانید صریح و روشن می شود در مورد نوع که
ما می رویم به استفاده از آن برای ثابت یا متغیر
با استفاده از این نحو instead-- اجازه دهید رشته نام کولون برابر
دن، که در این مورد به معنی ما رفتن به تعریف یک نام نام ثابت است.
آن را به از نوع رشته.
و ارزش است برای رفتن به دن.
در حال حاضر راه های دیگر است که ما می توانیم ایجاد variables--
و این متغیرها تغییر پذیر هستند، که معنی است که ما، در واقع، رفتن
به تغییر محتوای آنها گاهی اوقات در مدت زمان زمینه
که آن متغیر است defined-- ما استفاده از کلمه کلیدی var جای دهید.
اما باز هم، به طور پیش فرض، مگر اینکه شما می دانید که شما نیاز به دستکاری داده ها،
سعی کنید به استفاده اجازه دهید برای بهبود عملکرد.
>> در این مورد، من پس از آن می توانید تعیین نوع داده
که ما انتظار داریم به داخل می شود این متغیر جدید به نام برچسب.
آن را به یک رشته است.
و ما قصد داریم تا پس از آن الحاق دو رشته با هم، رشته سلام،
و رشته ارائه شده توسط متغیر، و یا به جای نام ثابت است.
>> بنابراین این خوب به دلیل این است است که تا حدودی مانند که ما پی اچ پی
دارند الحاق رشته بسیار آسان است.
ما به طور خودکار به ندارد استفاده از هر نوع از مدیریت حافظه
برای افزایش اندازه و انجام هر نوع از چیزهای خنده دار وجود دارد.
این نسخهها کار به عنوان ما در واقع انتظار می رود.
>> همه حق است، هر گونه سوال در مورد این؟
>> در حال حاضر دلیل دیگری که ما نیاز شما توانایی
قادر به تعریف آنچه نوع متغیر داده ها
است چون گاهی اوقات ما نمی می خواهم به مقداردهی اولیه متغیر
با برخی از داده ها در نقطه تعریف.
بنابراین در این مورد، اجازه دهید بگویم که من می خواهم برای شروع وارد
برخی نمرات را به یک کتاب درجه.
خب من می دانم که یکی از متغیرهایی که من می خواهم به
در حال رفتن به یک کلاس تغییر پذیر.
و ما نیز می دانیم که ما خواهید آن را به یک عدد صحیح.
اما شاید ما هنوز نمیدانیم که درجه در دسترس است.
>> در سویفت، شما را به تعریف نوع داده
است که با مرتبط متغیر و یا یک اجازه ثابت
قبل از واقع شما می توانید استفاده از آن متغیر است.
دلیل آن است که به شدت تایپ، شما باید به یک نوع ارتباط
با این متغیرها باشد.
>> بنابراین در این مورد، اگر من به درستی نمی مقداردهی اولیه برای اولین بار با برخی از ارزش،
پس از آن من نیاز به سویفت بگویم چه من انتظار دارم که نوع داده شود.
و آن را به باقی می ماند که نوع داده های مشابه
در طول تاریخ این برنامه است.
>> در حال حاضر شما ممکن است به عنوان به زودی به عنوان وسوسه من این متغیر درجه ایجاد کرده اند
و ارائه آن عدد صحیح از 100، در حال حاضر اگر من
می خواهید امتحان کنید به الحاق یک رشته با عدد صحیح،
ممکن است وسوسه هنوز هم استفاده از که اپراتور الحاق رشته
مثل ما فقط چند خط قبل از انجام.
اما متاسفانه، این خواهد شد در واقع نه
کار، چرا که شما می اساسا انجام
یک عملیات بر روی دو نوع مختلف.
>> در حال حاضر این بسیار متفاوت از دیگر است زبان هایی مانند PHP که واقعا
احمق loosey با مرتب کردن خود از انواع.
آنها فقط دوست دارم، آره، هر چیز دیگری، برای من مهم نیست.
فقط به من یک نوع را، و شاید من درست انجام دهد.
>> در این مورد، سویفت است بسیار سخت در مورد انواع
که شما با خرید و فروش.
این اپراتور جمع و یا عملگر الحاق
اساسا یک زن و شوهر گزینه های مختلف امکان پذیر است.
شما می توانید جمع انجام با اعداد صحیح، و یا شما
می توانید الحاق رشته انجام دهید، و شاید برخی از چیزهای دیگر است.
اما در صورتی که اپراتور به رسمیت نمی شناسد آنچه که در دو طرف آن،
و یا به جای ترکیبی از آن دو نوع است، چه آن را انتظار نیست،
سپس آن را به علت شکست.
>> بنابراین در این مورد، به چه معناست به یک رشته به علاوه یک عدد صحیح؟
خوب در زمینه این، ما احتمالا می خواهید
برای انجام یک عملیات الحاق رشته.
اما البته کامپیوتر که مرتب سازی بر اساس زمینه ندارد.
و بنابراین ما نیاز به ارائه که اطلاعات اضافی
اجازه دهید آن را دانم آنچه در آن این است که ما می خواهیم انجام.
>> بنابراین به عبارت دیگر، این واقعیت است که سویفت به شدت تایپ
معنی است که شما باید برای انجام یک کمی کار اضافی
برای به دست آوردن آن را به کار راه که شما می خواهید.
اما به عنوان یک نتیجه، آن را امن تر است.
و هنگامی که شما به حساب آن دسته از انواع،
همه چیز فقط رک و پوست کنده شروع به کار بسیار خوب است.
>> بنابراین در این مورد، ما پس از آن انجام الحاق رشته
توسط صریحا ریخته گری عدد صحیح را به یک رشته
با بسته بندی آن در این سرمایه تابع S رشته،
و سپس با استفاده الحاق رشته اپراتور برای تغییر متغیر label ما،
و سپس آن را چاپ کنید.
>> تا کنون خیلی خوب؟
همه حق است، اجازه دهید در حرکت.
>> در حال حاضر انواع مختلفی از داده ها وجود دارد انواع که ما می توانیم در سویفت استفاده کنید.
همانطور که شما برای تبدیل شدن به عادت کرده اند، ما می توانیم یک آرایه تغییرپذیر ایجاد کنید.
و آن آرایه می تواند تنها شامل نوع تک.
>> بنابراین در این مورد، ما قصد داریم برای ایجاد آرایه تغییرپذیر از اعداد صحیح، که
ما نمرات پاسخ، و ما قادر خواهد بود به ذخیره است که در این براکت
فرمت به عنوان شما عادت کرده ام در انواع زبان های دیگر.
اما توجه کنید که در اینجا ما تعریف یک چند چیز است.
نمرات variable-- تغییرپذیر است ما کلید واژه اجازه استفاده کنید.
به طوری که معنی است که ما پس از آن می توانید تغییر دهید محتویات این آرایه.
این آرایه از نوع int است، و ما می توانیم بگویم که
بر اساس این براکت مربع است.
>> در حال حاضر یکی از چیزهای خوبی که در مورد این که ما است
دسترسی به بسیاری از اطلاعات اضافی
در مورد آرایه فقط با استفاده از برخی از نماد نقطه ساده است.
بنابراین برای مثال، grades.count فراهم می کند به ما
تعداد آیتم هایی که در که وجود دارد آرایه، که ما پس از آن می تواند بسیار دسترسی
به راحتی با استفاده از آن به سادگی نماد نقطه.
>> اگر شما می خواهید برای اضافه کردن اضافی اقلام به این آرایه،
شما می توانید سبک پی اچ پی نیست که در آن شما فقط به وضوح تعریف،
در شاخص داده می شود، برخی از ارزش که شما می خواهید برای وارد کردن.
در عوض، استفاده از الحاق روش در نوع آرایه
به اضافه که در مورد، 95، به این لیست است.
>> بنابراین در حال حاضر این آرایه به شرح زیر است contents-- 100، 0، 90، 85.
و در حال حاضر ما به اضافه 95 تا آن نیز هست.
>> راه های دیگر وجود دارد ما می توانیم چیزهای اضافه کنید.
شما می توانید در واقع استفاده از یک اپراتور جمع،
که به عنوان تفسیر عملیات الحاق آرایه.
و سپس می توانید یکی دیگر از اضافه آرایه، که مطالب 70 و 80،
به که آرایه.
بنابراین در حال حاضر ما باید مطالب مندرج در این متغیر
grades-- 100، 0، 90، 85، 95، 70، و 80.
این فقط یک نحوی کمی خوب است شکر که سریع فراهم می کند به ما.
>> بنابراین اگر ما می خواهیم به جمع نمرات، ما شاید هستید
رفتن به می خواهم به تکرار بیش از هر آیتم در این حلقه.
و ما لازم، در سویفت، مفهوم از یک حلقه for عنوان انتظار می رود.
اما راه است که ما نشان می دهد طیف کمی متفاوت است.
بنابراین در این مورد، به خلاصه همه چیز، ما
برای ایجاد یک موقت متغیر مجموع به نام به منظور برای ما
برای حفظ این تعداد.
>> و متوجه برای ما ساخت و ساز حلقه در اینجا.
شاخص در 0 .. <grade.count.
بنابراین این ساخت و ساز، 0 .. <grades.count عملیات وسیعی که در آن ما است
گفت که ما می رویم به ایجاد طیف وسیعی از اعداد صحیح از 0 تا
به جز grades.count.
بنابراین این خواهد شد 0، 1، 2، 3، 4، 5، تا یک این حال بسیاری از
قبل از grades.count.
>> بنابراین این متفاوت از این است که ما چگونه می به طور معمول برای حلقه استفاده می شود
که در آن شما می توانید برخی شاخص دارند متغیر، آن را برابر با 0 در ابتدا تعیین می کنند،
و سپس ادغام است که تا زمانی که برخی مقدار کمتر از تعداد اقلام
در آن آرایه.
>> بنابراین اصلاح وجود دارد این، در واقع،
ما اجازه می دهد به راحتی مجموعه ای از انواع مختلف از محدوده.
اگر شما تغییر این محدوده به سه نقطه، 0 ... grade.count،
این نشان دهنده محدوده 0 به grades.count فراگیر،
به این معنی که این تعداد هم سپس در آن مجموعه است.
>> اما این بسیار مفید است برای این چیزها دقیق،
هنگامی که ما مجبور به انجام تکرار بیش از حلقه
زیرا این شاخص صفر شدهاند، همانطور که ما در زبان های دیگر دیده می شود
به خوبی.
هر گونه سوال در این حلقه؟
>> بنابراین تعریف ضمنی وجود دارد این متغیر شاخص،
ارزش که آغاز می شود در 0، و در هر تکرار حلقه ادامه
به 1 تا افزایش می یابد تا یک نقطه که برابر grades.count است،
که در آن نقطه، حلقه به نتیجه نرسد.
>> توجه کنید که در رشته ما درون یابی در اینجا،
ما در واقع می توانید انجام برخی از ساده دستکاری به آن ارزش.
بنابراین شاخص به علاوه 1 خواهد شد در واقع انجام یک جمع بندی از که ارزش
چون شاخص است، در این حالت، یک عدد صحیح است.
و در آن نقطه، آن را به پس از آن را به یک رشته تبدیل می شود
و درون یابی به این رشته در اینجا، و چاپ کرد همانطور که ما انتظار می رود. .
>> و چیز خوب در مورد آرایه ها در اینجا این است
که ما نیز قادر به است ارزش واکشی و مقادیر تنظیم
با استفاده از علامت کروشه مربع به عنوان ما در زبان های دیگر دیده می شود و همچنین.
>> خوب، پس از اینجا، ما در حال حاضر محاسبه مجموع ما از همه نمرات ما است.
در حال حاضر نوع از بعدی گام منطقی خواهد بود
برای انجام یک عمل تقسیم را پیدا از متوسط ​​کسانی که نمرات.
اما چیزی مهم در اینجا اتفاق می افتد که
این است که این مبلغ است که شاید یک عدد صحیح.
اما ما نیاز به انجام برخی از مرتب سازی بر اساس تقسیم دو برابر شود.
و این است که برای رفتن به بسیار مهم است که
ما می خواهیم به انجام این عملیات، زیرا آنچه که ما می گویند
این است که ما به واقع نیاز انجام تقسیم بر دو دو برابر است.
و دوباره، چرا که سویفت بسیار به شدت تایپ،
ما به صراحت باید همه از مجموعه اقلام به دو برابر قبل از ما در واقع
انجام این عملیات.
>> بنابراین به منظور برای ما به انجام تقسیم دو برابر
کافی نیست فقط برای یک از کسانی که در مورد به یک دو برابر شود.
هر دو آنها را باید به عنوان یک دو در برای سریع
تا مطمئن شوید که این چیزی است که ما خواهید انجام دهید.
بنابراین ما پس از آن به صراحت Typecast به خواهد مجموع که ما در بالا محاسبه ام
و تعداد نمرات به دو برابر، و پس از آن انجام عملیات و اینترنتی که
که به این متغیر جدید، و یا به جای این ثابت جدید به نام به طور متوسط،
که باید چه نوع، تصور می کنید؟
دو، آره.
بنابراین در این مورد، ما لازم نیست که به آن را مشخص
به دلیل آن را می توان از استنباط عملیات چه نوع از میانگین داده ها
خواهد بود.
و سریع است به طور کلی خیلی خوب در مورد قادر به استنباط انواع است.
>> آیا شما می خواهید برای دیدن این اجرا، و یا می توانم در حرکت؟
من می خواهم به رفتن ادامه دهید.
هر گونه سوال در هر یک از این؟
عالی.
>> در حال حاضر ما در حال رفتن به شروع به گرفتن به خوب توابع تعریف stuff--،
و دو نوع دیگر که منحصر به فرد سویفت که شما ندارد
دیده می شود در زبان های دیگر تا این نقطه،
اما آنها در حال حاضر در دیگر زبان که ممکن است بعدا در پیدا کنید.
بنابراین اگر شما می خواهید برای اولین بار برای تعریف یک تابع،
آن را با کلمه تعریف می کنید بد بو تابع، و سپس نام تابع،
و پس از آن در پرانتز، استدلال که شما می خواهید که تابع را بپذیرد.
استدلال ها نیز باید specify-- generally--
همچنین باید نوع داده مشخص است که آنها هستند، مگر اینکه آنها را می توان استنباط کرد.
و ما که کمی را ببینید نکته در فقط یک کمی.
>> بنابراین در این مورد ما باید یک تابع به نام printGradeCount.
ما قصد داریم به قبول variable-- و یا به جای در این مورد،
constant-- نام GradeBook را.
و آن را در حال رفتن به از می شود نوع آرایه از اعداد صحیح.
در حال حاضر چیزی وجود دارد که واقعا مهم است در اینجا
که من می خواهم شما را به درک.
این است که به طور پیش فرض، این استدلال که ورودی به این تابع می باشد
تعریف با اجازه کلمه کلیدی ضمنی، به این معنی که من می توانم این را تغییر دهید
متغیر GradeBook را در اینجا.
و آن نوع از حس می کند، چون شما در حال عبور داده ها در.
و شما شاید آن را می خواهم به از زیر شما تغییر کند.
ممکن است که به صراحت ذکر که این یک متغیر است با قرار دادن
کلید واژه var اینجا.
اما این یک مارپیچ که ما این است مردم متوجه در گذشته انجام داده اند
این است که آنها در نظر گرفته که آن را به یک متغیر که، در واقع، آن را
ثابت است.
>> همه حق است، بنابراین در اینجا پس از آن، در این مورد، ما مشخص هر نوع بازگشت.
ما شما را چگونه به انجام را نشان می دهد که در یک لحظه.
اما توجه کنید که در اینجا ما باید فقط یک ساده اگر وضعیت.
اگر GradeBook را خالی است، که در این مورد
فقط ویژگی این عدد صحیح است آرایه، سپس ما چاپ از چیزی.
در غیر این صورت ما کار دیگری انجام دهید.
>> بسیار ساده تا کنون من فکر می کنم.
اما من را متوقف کند اگر شما هر گونه سوال.
>> در حال حاضر این تابع، به طور متوسط، نیز طول می کشد برخی از استدلال، یا به جای یک آرگومان،
است که GradeBook را، و این بار رفتن به بازگشت یک نوع دو برابر شود.
دلیل آن است که محاسبات متوسط ​​و آن را
رفتن به واقع بازگشت که به طور متوسط ​​محاسبه شده به خط فراخوانی.
>> در این مورد، ما مشخص پس از یک پیکان بازگشت نوع.
و این ممکن است احساس نوع عجیب و غریب در ابتدا.
شما عادت کرده ام به تنظیمات بازگشت
نوع قبل از نام تابع.
اما اگر شما فکر می کنم از این در ریاضیات،
مانند هنگامی که شما به ریاضیات که تعریف یک تابع،
شما باید یک تابع با برخی از ورودی و آن را به تولید یک خروجی.
و دقیقا همان چیزی است این قرار است به تقلید.
و یک زن و شوهر از زبان های دیگر وجود دارد که نحو مشابه به عنوان خوب،
اما احتمالا هیچ کدام که شما در CS50 دیده می شود.
اما هنوز هم نمی توان با آن اشتباه گرفته شود.
فلش معنی آنچه در جریان است در این مورد بازگردانده می شود.
خوب، پس چگونه می خواهیم برای محاسبه این طور متوسط؟
خوب، اگر GradeBook را خالی است، و سپس ما
رفتن به بازگشت 0، که شاید راهی منطقی برای درمان این.
من نمی دانم، اجازه دهید آمده برگشت به که در یک کمی.
این ممکن است در واقع یک راه معقول
برای محاسبه متوسط ​​اگر ما یک GradeBook را خالی می باشد.
>> پس از آن ما فقط انجام جمع ما است.
توجه داشته باشید که در اینجا ما در واقع یک نسخه جایگزین از
برای حلقه، که اجازه می دهد تا ما را به تکرار بیش از هر مورد تنها در یک آرایه
و قرار دادن هر عنصر در متغیر خود را دارد.
با مشخص برای درجه در GradeBook را، آنچه ما می گویند
این است که ما در حال رفتن به طور ضمنی ثابت جدید به نام ایجاد
درجه است که رفتن به نمایندگی هر مورد منحصر به فرد در GradeBook را
هر زمان که برای تکرار حلقه.
بنابراین اولین بار است که آن را اجرا، کلاس خواهد شد
برای اولین بار مورد در GradeBook را.
بار دوم آن خواهید بود مورد دوم، به طوری که در تاریخ و غیره
تا زمانی که GradeBook را دارد خود را از عناصر خسته.
پس از آن ما قادر خواهد بود که به طور خلاصه درجه در متغیر جمع ما
و بازگشت ما به طور متوسط همانطور که پیش از دیده می شود.
OK، هر گونه سوال؟
بله؟
مخاطبان: من دو سوال دارم.
شماره یک، فرضی، می توانید شما اجرا صحیح در این یکی؟
ندارد به یک دو، درست است؟
DAN AMRMENDARIZ: شما می توانید این سوال را تکرار؟
مخاطبان: می توانم انجام دهم عدد صحیح به عنوان متوسط؟
DAN AMRMENDARIZ: شما می توانید انجام صحیح به عنوان یک به طور متوسط؟
بنابراین یک عدد صحیح بازگشت به طور متوسط ​​به جای یک دو؟
>> مخاطبان: Return-- شما که در حال حاضر زیر کلیک کنید.
DAN AMRMENDARIZ: در اینجا، بازگشت 0.0؟
مخاطبان: آره، فقط 0 بازگشت.
پس از آن هم خواهد بود 80 یا 85، اما نه 85.2.
>> DAN AMRMENDARIZ: پس در آن صورت، بنابراین یک زن و شوهر از راه های مختلف وجود دارد
برای پاسخ به این.
اجازه دهید من به آنها پاسخ به منظور.
بنابراین اگر من فقط این را بازگشت 0، 0 یک مقدار صحیح است.
و به طوری که یک علت خطای نوع برای این مورد
دلیل آن است که در انتظار یک دو اما پس از بازگشت یک عدد صحیح.
اگر من می خواهم به بازگشت یک عدد صحیح، من می توانم.
من می توانید نوع بازگشت به مجموعه به int، بازگشت 0 در اینجا،
و تقسیم دو انجام نمی شود.
اما پس از آن ما خواهد بود انجام تقسیم عدد صحیح.
و بنابراین ما پس از آن می نه به طور متوسط ​​است که ما احتمالا انتظار می رود.
اما بله، ما می توانید تغییر دهید انواع در آن راه.
>> رسید و در مرحله دوم، شما داریم، یکی دو در بالا.
اما پایین، هنگامی که شما انجام بازگشت دو دو،
که در حال حاضر به طور خودکار بازگشت فرمت دو.
چرا شما هنوز هم نیاز به تعریف آن با فلش بر روی بالا با دو؟
>> DAN AMRMENDARIZ: پس در مورد، این بخش این است
از the-- تا به تکرار سوال، چرا که آن را به طور ضمنی از بازگشت
انواع اینجا، چه نوع این در واقع است، ما باید صریح و روشن با سویفت
در مورد آنچه ما می خواهید بازگشت از این تابع
به طوری که وقتی آن را انجام تایپ چک کردن، آن را می توانید مطمئن شوید
که آنچه که ما در واقع نوشته شده پایین در واقع به که مطابق.
پس از آن نوعی مانند یک چک با خودتان مرتب کردن بر اساس وضعیت.
اما وجود دارد are--
>> مخاطبان: [نامفهوم] فلش؟
>> DAN AMRMENDARIZ: موارد هنگامی که وجود دارد ما می توانیم مشخص کنید که به طور ضمنی می توانید
مجموعه ای از نوع بازگشت.
اما در این مورد، من نمی فکر می کنم که کار می کنند.
برخی از نحو دیگر وجود دارد که ما بعد خواهید دید.
>> خوب، پس این منبع کد فعال است کمی متفاوت
چرا که این استدلال از تجزیه تابع که ما خواستار.
اجازه بدهید به شما نشان می دهد چگونه کار می کند قبل از اینکه ما در واقع در حرکت
به برخی از چیزهای جالب که در سویفت اتفاق می افتد.
>> بنابراین در این مورد، اگر من فقط این را اجرا کد، توجه کنید که آنچه در آن است انجام
در حالی که is--، این نوع از یک خطای عجیب و غریب به من می دهد.
من نیاز به تصویب آن را به یک زن و شوهر از اعداد صحیح به عنوان آرگومان خط فرمان.
بنابراین اجازه دهید که، 150 و 80، و ضربه را وارد کنید برای پیدا کردن آنچه در آن واقع انجام است.
این پذیرش هر یک از این مقادیر به عنوان عدد صحیح.
آن آنها وارد به یک GradeBook را.
و سپس آن را انجام که محاسبه متوسط
و خروجی که همانطور که ما انتظار می رود.
>> اما بدیهی است که چیزی رفتن وجود دارد با این چیزی است که رد
چیزی به عنوان یک عدد صحیح.
همانطور که از زمانی که به یاد ما با آرگومان های خط فرمان
در C و زبان های دیگر، اولین آیتم 0 ام که در آرگومان خط فرمان
لیست نام دستور است که ما در واقع اجرا می شود.
بنابراین در این مورد، من فقط حلقه بیش از همه آرگومان های خط فرمان.
اما من هر نوع فانتزی را انجام نمی بررسی به جست و خیز بیش از آن که یکی از اولین.
من فقط به صراحت هستم یا من به طور ضمنی هستم چک کردن که از این نوع
اعداد صحیح هستند قبل از من در واقع انجام این محاسبات.
>> و این اساسا آنچه اتفاق می افتد در اینجا.
برای هر بحث در استدلال روند این است،
من قصد دارم به انجام برخی از چک.
و در این مورد، من قصد دارم به تلاش برای تبدیل اول
که استدلال به یک عدد صحیح توسط انجام یک Typecast به صریح و روشن،
دلیل آن، در ورودی، یک رشته است و نه در واقع یک عدد صحیح.
>> اما این نوع از نحو عجیب و غریب است، اگر درجه اجازه برابر INT (بحث).
آنچه واقعا رخ داده در اینجا است که بسیار
با استفاده از خود را سویفت مهم است.
این کار با استفاده چه به نام یک نوع اختیاری است.
>> بنابراین این تابع، INT (بحث)، نه فقط یک عدد صحیح، اما بازده گرداند
چه یک عدد صحیح اختیاری نامیده می شود.
و بنابراین این نوع از یک نوع در بالای یک نوع.
شما به نوعی آن را تصور کنید مانند می توانید آن را مانند یک بسته بازگشت.
و هنگام باز کردن آن بسته، آن را هم
دارای یک عدد صحیح، که در نتیجه، و یا آن را تا کاملا هیچ چیز در آن در همه.
و این به عنوان یک چک کردن خطا مفید است مکانیسم، چرا که در این مورد
ما می توانید پیدا کردن، این بود نوع تبدیل موفقیت آمیز؟
اگر آن بود، سپس آن را در واقعیت این است رفتن به یک عدد صحیح در داخل.
در غیر این صورت آن را به برخی از ارزش است که ما صفر است، پاسخ که
نماینده هیچ عدد صحیح در همه است.
این واقعا نماینده از هیچ چیز.
>> و بنابراین این اگر ساخت و ساز اجازه می دهد تا ما را به باز کردن که بسته،
که اختیاری الزام آور است.
و اگر ما قادر به باز کردن که بسته بندی و پیدا کردن یک عدد صحیح در داخل،
پس از آن چه ما می گویند در اینجا این است که ما خواهد شد و سپس
اجازه می دهد که ارزش به توان به مجموعه این ثابت به نام درجه.
و این بخش از دستور if قسمت بالای اگر بیانیه
اجرا خواهد شد، چرا که ازاد کردن موفقیت آمیز بود.
>> اگر آن را فقط اتفاق می افتد که بود شاید یک خطا وجود دارد
در این نوع تبدیل صریح از یک رشته را به عدد صحیح، شاید
آن ABC ارزش برای مثال است.
و این در واقع نمی برای تبدیل به یک عدد صحیح.
سپس آن را به صفر بازگشت، که است که یک عدد صحیح است.
و این دستور if و سپس شکست.
درجه نمی خواهد به خاطر وجود آن است که هیچ محتوای عدد صحیح است.
و آن این بلوک دیگری به جای اجرا خواهد شد.
بله؟
>> رسید از Nil N-I-L است؟
DAN AMRMENDARIZ: صفر N-I-L است، بله.
>> پس این است که شاید یکی از سخت ترین چیز در مورد سویفت،
به ویژه هنگامی که شما در آن هستید علف های هرز در برنامه های iOS
و شما در واقع تلاش برای انجام برخی از توسعه وجود دارد.
آن را به فریاد می شود در شما در مورد اختیاری است.
آن را به درخواست شما برای علامت سوال و علامت تعجب.
اما هنگامی که شما شکل out-- اگر شما به بدانند صرف یک زمان
آنچه در جریان است با انواع اختیاری، شما خود را به مقدار زیادی از سردرد نجات
به عنوان شما می خواهید به نوشتن یک برنامه در سویفت.
>> این در واقع یکی از ویژگی های بسیار قدرتمند است.
و شما فقط می خواهید به کلمه من برای آن در حال حاضر.
اما ما این ساخت و ساز را ببینید و برخی دیگر آن را دوست دارم
در برخی از کد منبع دیگر که ما شما را در فقط یک کمی نشان می دهد.
>> وجود دارد هر گونه سوال اولیه که اینجا هستید؟
بنابراین مهم است که یک غذای آماده نوع اختیاری مرتب کردن بر اساس metatype است.
این هم یک ارزش، و اگر آن را، سپس آن را
خواهد شاید که ارزش در ارتباط اند با آن، یا آن را ندارد ارزش آنچه،
و آن است که توسط NIL نشان.
بقیه این است که شاید عنوان انتظار می رود.
>> بنابراین اجازه دهید سطح شیب دار تا مشکل دوباره.
و در این زمان، اجازه دهید نگاهی به برخی انواع دیگر داده است که در واقع وجود دارد.
یکی از آنها لغت نامه است، که بسیار شبیه به لغت نامه پایتون.
این تا حدودی شبیه به یک جدول هش در C. آن است که اساسا یک نگاشت کلید
که در آن کلید می توان رشته ها.
و هنگامی که شما نگاه کردن به آن کلید، آن کلید یک مقدار داشته باشد.
پس از آن کاملا یک آرایه نیست، اما به جای آن، بیشتر از نزدیک مرتبط
به یک نقشه هش یا یک جدول هش.
>> بیایید ببینید که چگونه این قرار است قبل از ما کار در واقع
رفتن به کد منبع خود.
اگر من فقط این را اجرا کنید، هیچ چیز واقعا اتفاق می افتد.
آن را به من گفتن که من در انتظار برخی از پارامترهای نوع زیر است.
بنابراین من قصد دارم برای ارائه به آن را برخی از نام مجموعه ای مشکل،
بنابراین pset0، شاید من 100 است.
و pset1، من یک 5 است.
و پس از آن در آزمون، من واقعا خوب و به 30.
و وای، من یک فضای ضربه در اینجا.
>> وقتی که من ضربه وارد کنید، شما می توانید ببینید آن را انجام برخی محاسبات.
این گزارش می گوید GradeBook را سه است نمرات، pset1، pset0، امتحان.
و GradeBook را دارد این طور متوسط ​​است.
پس دوباره، ما در حال کار با این ایده GradeBook را،
اما ما قصد داریم به ادامه تکرار با پیچیدگی تابع ما است.
>> بنابراین در شروع، ما فقط در حال برای ایجاد یک تابع است که
مسئول چاپ استفاده است.
و این خروجی وجود دارد تابع که فقط
به زور ترک برنامه.
این چیزی نیست که شما در برنامه های iOS استفاده خواهد کرد.
این است که تنها، در این مورد، با یک آرگومان خط فرمان.
بعد ما شروع به حرکت به سمت Xcode متعلق به.
اما این خاص به یک فرمان است برنامه سبک خط در سویفت.
>> اجازه دهید یک نگاهی به برخی از چیزهای جالب در اینجا.
بیایید ببینید، تنها چند چیزهای جالب به ذکر است شاید
است که در عملکرد من چاپ تعداد نمرات،
شما ممکن است به یاد آورید که من تا به حال این لیست از pset1 items--، pset0 و امتحان.
شما هم می توانید به سرعت در واقع و به راحتی این کار را انجام
با در نظر گرفتن GradeBook را، که یک فرهنگ لغت است که کلید ها و مقادیر.
یافتن همه از کلید است که از طریق روش کلید نقطه در اینجا،
و پس از آن استفاده از این joinWithSeparator، که پس از آن تمام کلید خواهد
که ما در تایپ کرده بود، و یا pset1-- با عرض پوزش، pset0، pset1 و exam--
و با هم الحاق آنها از کاما استفاده و فضا
برای ایجاد یک رشته طولانی.
این عملیات پیوستن فقط پدیداری در انواع زمینه مفید است.
و پس از آن این joinWithSeparator است.
>> و این یکی از چیزهایی است که است از Swift 1 تا سویفت 2 تغییر کرده است.
استفاده وجود دارد به یک style-- پایتون اگر شما
با Python-- پایتون آشنا سبک ملحق روش در رشته ها.
اما این است که دیگر در مورد سویفت 2.
شما می خواهید به استفاده از این اگر شما می خواهید برای الحاق یک آرایه از مسائل
همراه با یک رشته است.
>> بنابراین شاید پس از آن در ما بحث به طور متوسط ​​قبل،
آن را حس می کمی بیشتر برای ما به تنظیم عملکرد متوسط
به یک دو اختیاری و نه از فقط یک دو صریح است.
از آنجا که ما بود که شرایط غیر معمول که در آن،
چه می شود اگر GradeBook را در واقع هیچ ارزش ها در آن است؟
چه باید بازگشت به طور متوسط؟
>> خب شاید در C شما چیزی انجام داده اند
مانند ارائه یک مقدار نگهبان، مانند 0.0، و یا شاید یک عدد منفی،
و یا چیزی فقط به نمایندگی از واقع این بود که برخی از شرایط خطا وجود دارد
و شما شاید ندارید که توانایی برای محاسبه که به طور متوسط.
خب زیبایی از تعیین یک نوع اختیاری می تواند به انجام این کار.
و من در حال حاضر گفت همه این کلمات، اما این در واقع اختیاری استفاده نمی کند.
اما خواهیم دید که فقط در دقیقه که در آن ما می توانیم راه متوسط
به یک نوع داده به طوری که اختیاری اگر آن را در واقع می گرداند برخی از داده ها، پس از آن
ما که داده بازگشت.
در غیر این صورت ما باز خواهد گشت NIL، گفت که این
هیچ محاسبات معنی دار است.
>> اجازه دهید تا به چیز دیگری حرکت می کند.
بنابراین از اینجا، ما شده ایم به دنبال در تمام این مثالها در خط فرمان.
اما واقعا چه چیزی شما به خرید و فروش با Xcode است.
و یکی از چیزهایی که خوب در مورد Xcode متعلق است، و به طور خاص در سویفت،
است که ما باید این چیزی به نام یک زمین بازی.
و یک زمین بازی است در همه برنامه های iOS نیست.
اما اجازه می دهد تا شما را به آزمایش با سویفت در یک راه بسیار آسان است.
شما می توانید تمام کد را تایپ کنید.
آن را به خوبی در اینجا برجسته نحو.
هنگامی که یک فایل جدید ایجاد می کنید، آن را از شما خواهد خواست شما اگر شما می خواهید برای ایجاد یک زمین بازی.
اما چیز خوب در مورد زمین بازی این است که در سمت راست پنجره،
آن را در واقع به شما نشان دهد خروجی از کد خود را.
بنابراین اگر من پایین حرکت کنید، ما می توانیم آنچه را ببینید خروجی های مختلف از کد خطوط
در واقع اتفاق می افتد به.
>> بنابراین در این مورد، ما قصد داریم به تغییر جهت فقط یک کمی
و بحث در مورد چیزی که واقعا به این راه سطح بالا مهم
که سریع عمل می کند، و آن را این ایده از بسته شدن است.
و شما احتمالا این را دیده ام کمی در جاوا اسکریپت.
برای کسانی از شما که در CS50 هستند، تعطیلی
بسیار محبوب هستند، راه بسیار خوبی برای انجام همه چیز در سطح بالا در زبان های مدرن.
اما آن را نیز نوع مشکل به قرار دادن سر خود را در اطراف اولین بار.
بنابراین اگر شما به دنبال این اولین بار، که خوب.
فقط در کد منبع نگاه کنید و ببینید اگر شما می توانید آن را در خانه کشف کردن.
>> بنابراین در این مورد، اجازه دهید بگویم که ما می خواهید برای ایجاد بسیاری از شارحان
با برخی از ارزش ثابت شده است.
بنابراین در این مورد من می توانم یک تابع ایجاد کنید.
من قصد دارم به آن قدرت پاسخ 2 هدف که تنها در زندگی
است که برخی از ورودی و دو آن، و بازگشت که ارزش.
توجه داشته باشید که من اینجا هستم پذیرش یک نوع از داده ها.
آن را به یک متغیر به نام x.
آن را از نوع دو است.
و من قصد دارم برای بازگشت به دو است.
و من فقط رفتن را به انجام بسیار رک و پوست کنده، بسیار
راه ساده و بی تکلف از دو برابر این مقدار است.
و من به شما نشان می دهد که چرا این در یک لحظه، مفید است.
>> توجه داشته باشید که در اینجا ما باید این محدوده از نو. چیزی در 1، نقطه
نقطه نقطه، 2، به این معنی که این حلقه دو بار اجرا خواهد شد.
اما این نشان دهنده یک متغیر ساختگی.
این بدان معنی است من واقعا قصد به توان با استفاده از متغیر در هر نقطه که
در داخل این حلقه.
من فقط می خواهم این خط کد را به اجرا دو بار،
بدون نیاز به دانستن ارزش آن محدوده است.
>> بنابراین در این مورد من در حال اجرا در نتیجه زمان X دو بار، که در اصل
بدان معنی است که من تربیع این مقدار است.
و این اتفاق می افتد به کار به عنوان ما انتظار می رود.
قدرت 2، عبور از یک ارزش 2.0 به ما می دهد خروجی 4.
3.2 آثار برای 10.24.
>> حالا ما می توانیم مشابه انجام چیزی که برای قدرت 3.
اما در حال حاضر تنها در محدوده تغییر دهید.
برای متغیر ساختگی در 1 از طریق 3، ضرب 3 بار،
و همین کار را.
>> بنابراین این ممکن است احساس کمی ساختگی.
اما یک مهم وجود دارد چیزی که در اینجا که
این است که به دنبال این دو تابع، وجود دارد
تنها یک چیز که متفاوت، که این مقدار در محدوده است.
هر چیز دیگری در مورد این دو توابع، قدرت 3 و قدرت 2،
هستند، در واقع، به دلیل یکسان آنها در راه همان کار.
>> بنابراین در این مرحله، کمی زنگ زنگ باید رفتن است.
امیدوارم آنچه شما می گویید، شما می دانید، این احساس کمی
مانند تقلید از تلاش.
شاید یک راه وجود دارد که من می خواهم قادر به محفظهای همه از این
و ارائه یک تابع و یا ایجاد یک تابع است که
دقیقا همان چیزی است که من می خواهم بدون نیاز به نوع آن را به صراحت.
و این چیزی است که قدرت است بسته شدن اجازه می دهد تا ما را به انجام.
بنابراین اجازه دهید نگاهی به این.
و من یک زن و شوهر صرف دقیقه در این، چرا که این
است بسیار مهم برای سویفت.
ما این را در همه زمان ها.
ما قصد داریم به تعریف یک تابع.
آن را به نام powerOf.
آن را به قبول پارامتر به نام Y از نوع int.
اما نگاهی به نوع بازگشت.
نوع بازگشت است، در پرانتز، دو فلش دو.
به این معنی که این تابع، این تابع powerOf،
در حال بازگشت از یک تابع.
که پذیرش دو و بازگشت دو.
به طوری که ممکن است نوعی دیوانگی صدا، اما اجازه دهید در پایین حرکت کمی
و نگاه کنید تا ببینید چه اتفاقی می افتد.
ما در داخل این تابع powerOf است.
ما در حال ایجاد یک تابع جدید نام exponentiator،
اما مهم نیست که آنچه در آن است.
>> توجه کنید که این است یک مقدار ورودی x است.
و آن است که مصرف دو در یک و بازگشت دو.
و این همان کد است که ما دیدم بالا، به جز که ارزش 2
و یا ارزش 3، که حد بالا در آن محدوده،
شده است با جایگزین این مقدار y، که
پارامتر اولیه عملکرد powerOf ما است.
و در این نقطه، ما بازگشت exponentiator.
ما در حال بازگشت از تابع.
>> این نوع مانند دمیدن ذهن کمی.
اما اجازه دهید تصور کنید چه اتفاقی می افتد زمانی که من این تابع پاسخ powerOf
و با تصویب آن را به برخی از ارزش مانند 2.
این بدان معنی است که من در حال حاضر ارزش
2 Y، به این معنی که این مقدار Y در این تابع exponentiator
خواهد بود که ارزش 2.
اما من این بازگشت عملکرد exponentiator.
>> بنابراین متوجه آنچه سویفت می گوید من در این مورد ایجاد کرده اند.
اجازه مربع یک تعریف، آن را یک تابعی است که دو پذیرد
و تابع یک دو.
من یک تابع ایجاد کرده اند که مربع چیزی
با استفاده از این مکانیزم در اینجا ببینید.
و واقعا چه اتفاقی می افتد است آن است که بازگشت این تابع
exponentiator، اما این مقدار Y است در داخل آن پیچیده می شود.
و بنابراین در حال حاضر هر بار که من از این استفاده کنید متغیر و یا این ثابت به نام
مربع، آن آن را به عنوان یک تابع رفتار می کنند.
و بنابراین من می توانید پس از آن که متغیر پاسخ مانند من یک تابع،
و با تصویب آن را به یک عدد، مانند در این مورد 3.
و من خواهد شد و سپس مربع این مقدار است.
بنابراین 3 مربع پس از آن تبدیل 9، به عنوان ما در اینجا می توانید ببینید.
>> واقعا دیوانه است، اما این در حال حاضر من اجازه می دهد تا فرصت
ایجاد توابع دیگر powerOf.
مانند من می توانم بگویم، OK، و در حال حاضر من می خواهم برای ایجاد یک تابع جدید، powerOf (3)،
و ذخیره که به یک ثابت مکعب نامیده می شود.
و در حال حاضر مکعب است برای رفتن به یک عملکرد مجزا که پس از آن خواهد شد
به برخی از ارزش به عنوان ورودی و مکعب است که ارزش که ما می توانیم در خط پایین را ببینید
اینجا.
مکعب از 2 رفتن به نتیجه 8.
>> مسائل امیدوارم خیلی شسته و رفته.
شما قبل از این هرگز دیده می.
من شما را تشویق به تعطیلی نگاه و بررسی این کمی بیشتر.
این مسائل واقعا قدرتمند ما بسیاری ببینید در جاوا اسکریپت و برخی از زبان های دیگر.
این واقعا به حیاتی درک رابط های برنامه کاربردی و همچنین
که ما را به در یک ثانیه است.
بله؟
>> مخاطبان: هنگامی که شما انجام powerOf (2)، پرانتز، و پس از آن
پرانتز دیگر، یکی دیگر از input-- شما در واقع به جای مربع است.
DAN AMRMENDARIZ: پس نگاه کنید در خط بسیار گذشته در اینجا.
این است که در واقع کاملا به ممکن که زنجیری به شما به عنوان پیشنهاد شده است.
بنابراین powerOf (5) بدان معنی است که ما قصد داریم به یک exponentiator از 5 تا اینجا.
پس این است که اساسا برای رفتن به همان 4 به قدرت پنجم،
چون ما یک exponentiating ایجاد کرده اید عمل به قدرت پنجم،
و ما در حال عبور به که تابع ارزش 4.
و ما که ارزش که ما انتظار داریم، 1024.
رسید و آن را به یک نیست نام، به طوری آن را آسان تر
به خواندن، مربع هر چیز دیگری.
>> DAN AMRMENDARIZ: راست، دقیقا.
پس قبل از این فقط آن را به یک ثابت است بنابراین در اینجا
که آن را آسان برای استفاده از این نام.
بله؟
>> مخاطبان: در این زمینه powerOf، آن را بخشی
زبان برنامه نویسی به عنوان به راه شما مخالف
از powerOf فکر می کنم در [نامفهوم]؟
DAN AMRMENDARIZ: پس در این مورد، powerOf
به سادگی به نام است تابع که من تعریف تا اینجا.
پس از آن ذاتی نیست تا به خود زبان،
اما در عوض، آن را فقط یک تابع است که
که نام چون من آن را که نام می دهد.
هر گونه سوال دیگر؟
خیلی خوب.
>> در حال حاضر این بزرگ است.
اما شما در حال رفتن به یک بسیاری از توابع بسته شدن که
مثل این است که در آن تعریف می کنید، در داخل از یک تابع، یک تابع دیگر.
و شما می توانید آن را انجام دهید.
اما این نوع از نه واقعا لازم، درست است؟
مانند چرا این تعریف من تابع به نام exponentiator
و پس از آن بلافاصله آن را بازگشت.
چرا من نمی توانم فقط بلافاصله بازگشت این تابع؟
>> و در واقع، این دقیقا ایده پشت یک مفهوم به نام
توابع بی نام، که در آن توابع بی نام در واقع نه
یک نام به خاطر آنها لازم نیست به یکی.
و بنابراین در این مورد، در 7B، ما دقیقا که می توانید پیدا کنید.
این همه همان کد است، می کند دقیقا همان چیزی که،
اما در حال حاضر ما آن را کمی تغییر کرده ام، بنابراین که این تابع powerOf بلافاصله
یک تابع برمی گرداند.
توجه داشته باشید که پس از بازگشت، یک آکولاد باز وجود دارد.
این انتظار این ورودی دو.
این انتظار که خروجی دو.
و پس از آن در کلمه کلیدی کد را در جدا می کند.
بنابراین این یک تابع بی نام است.
این کار در واقع یک نام، در حالی که قبل از آن exponentiator نامیده می شد.
اما چنان که دیدیم، واقعا آیا مراجعه به exponentiator
در خارج از آن تابع.
بنابراین این مهم نیست.
بنابراین این تابع ناشناس است به اصطلاح به دلیل آن بی نام است،
اما هنوز هم مورد استفاده قرار گرفته در زمینه این کد.
>> بعد چند آنهایی که من رفتن به ادامه امیدوارم
دمیدن ذهن خود را کمی.
ما می توانیم این را حتی بیشتر را ساده کنید.
چرا که به عنوان پزشک مربوطه بود اشاره به قبل،
شاید ما در واقع می دانیم، توسط استنتاج از این کد، چه
خروجی این کد رفتن به باشد.
و در واقع، در این تابع ناشناس، ما می توانیم در واقع استنباط انواع اطلاعات است.
>> بنابراین در این یکی، ما دیگر نمی باید به طور صریح تعریف
نوع داده ها که در حال ورودی و خروجی از این تابع
برای یک زن و شوهر از دلایل.
یکی این است که ما تعریف کرده ایم، تا در نمونه اولیه از عملکرد نرده،
چه نوع داده این ناشناس تابع باید ورودی و خروجی.
و از سوی دیگر، ما می توانید از کد استنباط
در اینجا است که ما در حال پذیرش ورودی این است که از نوع double
و بازگشت دو.
>> توجه داشته باشید که در اینجا ما به صراحت ندارد تعریف نام از استدلال
که این تابع پذیرش است.
و بنابراین ما می بینیم را می توان به این پارامترها با استفاده از $ 0، $ 1،
به همین ترتیب و غیره، بسته به تعداد که پارامتر
در این تابع.
>> این چیزی است که شما در حال رفتن است برای دیدن بسیاری از این آکولاد باز است
تعریف به دنبال یک $ 0، و سپس برخی از عملیات،
و سپس یک آکولاد بسته شده است.
که یک تابع بی نام که انجام این عملیات.
از آن است که این پارامتر که در آن نوع آن را استنباط شده است.
که پارامتر اول $ 0.
و برخی از عملیات است اتفاق می افتد در که $ 0.
>> مخاطبان: بنابراین علامت دلار معنی پارامتر در واقع،
و 0 به معنی یکی از اولین.
DAN Armendariz به: درست است.
بنابراین علامت دلار اساسا به معنی پارامتر و 0 به معنی یکی از اولین.
اما کار می کند به طور خاص در این مورد که در آن من و نه به نام
استدلال در تابع بی نام من.
>> مخاطبان: آیا پرل یا چیزی این علامت دلار، دلار در 0 وجود دارد؟
DAN Armendariz به: آیا که، من متاسفم.
مخاطبان: آیا پرل اند این دلار 0، دلار 1--
DAN Armendariz به: من نه بیش از حد آشنا با پرل،
اما PHP متغیرهای تعریف چه بر اساس علائم دلار.
و ممکن است برخی از زبان ها وجود دارد که دارای ویژگی های شبیه به این.
در واقع، سویفت قرض بسیاری از ویژگی های شبیه به این
از بسیاری از زبان های دیگر.
ما نکات پایتون را ببینید در آن است.
این تعریف از نوع به نظر می رسد از اوکامی آمده است.
و ما فقط یک دسته کامل از مسائل را از بسیاری از زبان های مختلف.
که یکی از خوب همه چیز در مورد Swift
این است که طول می کشد بسیاری از بهترین ایده ها را از یک دسته از زبان
و همه آنها را با هم shoehorns به یک زبان فوق العاده.
در واقع، اگر شما به من اجازه می دهد تا ادامه دمیدن ذهن خود را،
بنابراین ما انجام شده است همه از این.
شاید بتوانیم کمی ساده این بیت به تحقق است که، البته،
سویفت است exponentiating تابع در ساخته شده است.
اگر من وارد داروین، که فقط این است که کتابخانه
ویژگی های این تابع به نام صدای انفجار، در حال حاضر من می توانم قدرت من از عملکرد ساده
به شرح زیر است.
این است رفتن به بازگشت می شود این تابع ناشناس.
>> اما در چگونه ساده این است در حال حاضر نگاه.
این یک تابع بی نام است که پذیرش برخی از انواع داده ها،
و آن را به یکی استدلال به طور خاص،
در 0 $ است که از نوع double اشاره شده است.
این است که برای بازگشت یک نوع دو.
اما از دستور return اکنون ضمنی است.
>> و آن این سبک دقیق است که بسیار، بسیار در سویفت شایع،
همه جا.
ما قصد داریم به این همه زمان ها در سویفت.
بنابراین من نشان دادن تمام این به شما به دلیل این نحو.
این بسیار معمول است برای دیدن، که به معنی آن
یک تابع بی نام است که اجرای
برخی از عملیات در این استدلال.
و یک بازگشت ضمنی وجود دارد.
بنابراین آن را کاملا همان چیزی است برای ما به این می گویند، در اینجا ببینید.
>> از آنجا که این اشکال مختلف براکت یک تابع باشد،
ما انجام این عملیات در اولین آرگومان.
ما قصد داریم به بازگشت است.
اما این بازگشت بیرونی است بازگشت که طیف تابع،
که تابع طیف ناشناس که ما فقط ایجاد کرده اید.
هر گونه سوال دیگر؟
همه حق است، من نمی دانم اگر شما بچه ها آماده برای این هستند،
اما ما می توانیم و حتی می کنی با سویفت است.
آماده ای؟
خوب، این بزرگ است.
>> در حال حاضر ما در واقع توانایی دارند به، در سویفت، به دلیل چگونه مدولار
و چگونه مبتنی بر پروتکل آن است، به تعریف اپراتورهای ناجور خود ما است.
مانند در این مورد، ما تا به حال هیچ اپراتور برای exponentiation-- خوب،
برای انجام قدرت از چیزی.
اما من می توانم، در سویفت، تعریف جدید اپراتور که دقیقا نشان می دهد که.
بنابراین در این مورد وجود دارد یک دسته از نحو در اینجا.
و من به شما اجازه به آن نگاه کنید در خانه هنگامی که شما در این.
اما ما در حال تعریف این نرم افزار ابزاری اپراتور، **، که پس از آن به ما اجازه خواهد،
با تعریف که تابع ** در واقع
می کند، به قبول دست چپ طرف و یک سمت راست،
و پس از آن برای بازگشت به توان که سمت چپ به سمت راست.
>> و بنابراین در حال حاضر همه از یک من ناگهانی کسر جدید ایجاد کرده اند.
بنابراین 2 ** 3 به این معنی 2 به توان سوم.
[ذهن دمیدن صدا] این خود را باید شما را مانند باشد،
OK، پیچ C. من قصد دارم Swift تمام راه.
این عالی است.
این بسیار فوق العاده است.
>> هر چند این یک مثال عالی است.
اما من هرگز یک بار خارج این مثال در واقع
اپراتور خود من تعریف شده است.
اما هنوز هم، آن را نشان می دهد بسیاری از قدرت سویفت
و چرا این است که در واقع واقعا بسیار سرد.
OK، بله؟
مخاطبان: اگر شما تعریف اپراتور خود را،
چگونه شما می دانید شما به طور تصادفی امتحان کنید و ایجاد یک اپراتور که
در جایی در C، مانند جایی در سویفت پنهان،
مانند یک مبهم است که شما قبل از ممکن است دیده نمی.
>> DAN Armendariz به: بنابراین اگر شما در حال تلاش برای تعریف اپراتورهای خود را،
است خطر ابتلا به تعریف وجود دارد یکی بیش از یک اپراتور موجود است.
که می رود به یک سطح از جزئیات که من فکر نمی کنم ما هم به بیش از رفتن داشته باشد.
اما این یک خطر است.
و این است که در واقع به این دلیل بسیار که چرا من نماد هشتک، استفاده نشده است که
هنگامی که ما در حال تایپ کردن از قدرت، ما معمولا استفاده از 4 هشتک کمی 5 یا چیزی
که، فقط زمانی که ما Gchatting دوستان و یا هر چیز دیگری.
اما در این مورد، که در واقع می توانست باعث برخورد.
و بنابراین من آن را فقط به خاطر اجتناب من اتفاق افتاده است می دانم که در این مورد
که که که برخورد شود.
>> خیلی خوب.
در حال حاضر متاسفانه، برای هفت دقیقه آخر،
من برای حفظ دمیدن ذهن خود را کمی.
بنابراین من اجازه می دهد به شما نشان دهد برخی از چیزهایی دیگر نیز هست.
>> ما به شما این ایده را از نشان داده ایم داشتن این توابع ناشناس،
این تعطیلی که به شما اجازه نوع عبور توابع اطراف.
شما می توانید آنها بازگشت.
شما می توانید آنها را دستکاری کنند.
شما می توانید تمام انواع چیزهای دیوانه است.
>> اما یک چیز دیگر است که اتفاق می افتد به مفید باشد
است که توانایی، به عنوان مخالف به بازگشت آن دسته از توابع
در یک تابع، یک تابع به تصویب به عنوان پارامتر به تابع دیگر.
شما ممکن است به خوبی فکر چرا بر روی زمین من می خواهم برای انجام کاری که می خواهم؟
>> خوب، اجازه دهید بگویم که من می خواهم به این اپراتور که من
خیلی سخت برای ایجاد و اعمال آن را به یک دسته از اعداد مختلف
در یک آرایه.
بنابراین در این مورد من یک آرایه از integers-- 1، 4، 7، 2، 5، 10، 56.
و من می خواهم به همه آنها دو برابر شود.
راه که ما را به طور معمول آن است که فقط ارسال
ساده برای حلقه است که تکرار بیش از همه از آنها
و انجام برخی از مرتب کردن بر اساس عملیات مربع بیش از آنها،
ورود کسانی که ارزش های جدید به جدید متغیر، یا نه، یک آرایه جدید در اینجا.
و ارزش خروجی نتیجه این است پس از آن همه از آن آرایه ها،
و یا به جای همه کسانی که عناصر اکنون مربع.
>> و ما می توانیم همین کار را چیزی که برای گفتگوی آن،
اما زنگ هشدار کمی باید خارج
گفت که شاید وجود دارد برخی از راه که ما را
قادر به ساده این یک کمی.
و در واقع وجود دارد.
اگر ما می تواند ایجاد یک تابع است که ما اجازه می دهد
به قبول، به عنوان یک درنده، یک تابع؟
بنابراین در این مورد، یک در این استدلال است.
ما قصد داریم به قبول یک لیست از دو برابر است.
و سپس ما در حال رفتن به قبول یک تابع
در یک متغیر به نام F است که رفتن به یک دو و بازگشت یک دو.
و کل خروجی کل این تابع
به نام آیفون است که به بازگشت آرایه ای به نام دو برابر شود.
>> این پس از آن به من اجازه می دهد تا انجام دهید این است که به تکرار بیش از لیست
و همین کار را، اما در حال حاضر اعمال می شود که تابع در هر
از ارزش های فردی در این لیست.
بنابراین من واقعا نمی دانند چه f است.
آن برای من مهم نیست.
اما تا زمانی که آن را در یک دو طول می کشد، انجام برخی از عملیات بر روی آن،
و پس از آن را برمی گرداند دو، من پس از آن می شود
قادر به نقشه که تابع در سراسر هر عنصر در لیست.
>> و این نوع از برنامه نویسی است نام توابع مرتبه بالاتر،
که در آن ما در حال عبور از توابع در اطراف به عنوان پارامتر
و انجام کارها با توابع.
این نوع مانند گرفتن تمام این ایده هایی که ما در CS50 به دست آوردید
و مصرف آنها را مرتب سازی بر از به سطح بعدی.
و این همه چیزهای سبک CS51 است.
و بنابراین ما در عمق بروید در کلاس های شبیه به آن.
>> اما این نیز مهم در اینجا چون ما
بسیاری از توابع را ببینید که در سویفت استفاده
که اساسا می کند این، که در آن ما
برخی از اعداد، برخی از آرایه از اعداد است.
ما قصد داریم که به تصویب آرایه را به آیفون است.
و ما همچنین به رفتن تصویب برخی از تابع، که
ما در حال حاضر تعریف تا اینجا.
آن را به مربع است.
و ما قصد داریم تا پس از آن Square تمام از آن اعداد
و ذخیره که به این نتیجه است.
>> بنابراین این مورد ما تعریف ما عملکرد خود به نام آیفون.
اما این چیزی که دقیق است، در واقع، ساخته شده را به سویفت.
انواع وجود دارد نقشه توابع نامیده می شود.
یک تابع نقشه وجود دارد، یک کاهش تابع وجود دارد،
و یک تابع فیلتر وجود دارد، که در اصل توابع اعمال
به هر عنصر در یک لیست آنها را تغییر دهید در برخی از راه.
>> مخاطبان: بنابراین از شما می تبدیل داده ها را به فرمت های دیگر
از طریق یک تابع
DAN Armendariz به: درست است.
آره، بنابراین تابع که ما در حال پذیرش
است تبدیل داده ها در برخی از راه.
در این مورد، ما هم شد تربیع آن، و یا ما آن را گفتگوی شد،
یا واقعا، ما می تواند انجام هیچ عملیات بر روی آن در همه.
>> اما اجازه دهید به شما نشان دهد که چگونه این پس از آن در حال رفتن به در عمل است.
و دوباره، من یک کمی از زمان. بنابراین من نمی
رفتن به قادر به بیش از همه از کد منبع در جزئیات.
اما من شما را تشویق به انجام این کار.
ما آن را در اسرع وقت ارسال ممکن است پس از این بحث.
>> اما اگر شما نگاهی به این فرض کنیم که ما یک لیست از اعداد،
آرایه ای از اعداد در این متغیر به نام اعداد.
پس ما می خواهیم برای انجام این عملیات فیلتر بر روی آن اعداد.
بنابراین فیلتر بالاتر تابع نظم که
یک آرایه و همچنین یک تابع را می پذیرد.
و بر روی هر عنصر در آرایه، آن را انجام آن تابع.
>> در صورتی که تابع برمی گرداند درست است، آن را نگه می دارد که در مورد.
اگر آن تابع مقدار false برگرداند، آن را دور می اندازد که در مورد.
و سپس آن را یک لیست را برمی گرداند است که پس از ساخته شده است تا تمام
از آن موارد است که فیلتر شده است.
>> به عبارت دیگر، این است همان ایده، از GradeBook را.
ما ممکن است از انواع نمرات به این مقدار به نام اعداد.
می تواند 100، و 70، و 40، به طوری که در تاریخ و غیره.
اطلاعیه آنچه که این فیلتر می کند که این است که شکر نحوی است
برای یک تابع بی نام.
این یک تابع بی نام و گفت که پارامتر که من پذیرش
در حال رفتن به، اگر آن بیش از 70 است،
پس از آن این درست خواهد بود، به این معنی است که که در مورد خواهد شد در این فیلتر نگه داشته شود.
بنابراین اجازه دهید کمی بتن بیشتر در مورد این.
اگر من این آرایه از اعداد و آن را از 100، 70، و 40 شامل،
من انجام این فیلتر عملیات در هر یک از این.
به طوری که یکی از اولین این مقدار از 100 است.
100 بزرگتر یا مساوی تا 70 درست است که
بدان معنی است که 100 در نگه داشته این نسخه جدید از این آرایه.
70 عبور می کند.
اما 40 نمی کند.
پس چه شده است در passingCount بازگشت آرایه ای از عناصر 100 و 70--
100، کاما، 70.
اینها تنها دو نفر آیتم هایی که نگه داشته شدند.
و به این ترتیب به همین دلیل من به سرعت از طریق رفت بسیاری از این نوع از سفارش بالا
همه چیز به دلیل این است که مشترک چیزی که شما در سویفت بسیار ببینید
اغلب، انجام شده است برخی از عملیات با استفاده از این نحو تابع بی نام.
>> در برخی از مسائل سرد وجود دارد.
سوئیچ واقعا در سویفت قدرتمند، منظور من فقط مانند دیوانه، دیوانه قدرتمند است.
شما می توانید سوئیچ استفاده کنید، و شما در واقع می تواند آنها اعمال می شود
به محدوده است، که نوع از دیوانه، و چیزهای فانتزی مانند آن.
>> اما در چند دقیقه آخر، من می خواهم به جست و خیز پیش کاملا به دور
و یک مثال خاص از اینکه چگونه شما را نشان می دهد ما می توانیم در برنامه های iOS با استفاده از سویفت ایجاد کنید.
بنابراین، هنگامی که شما در حال انجام این کار، شما باید برای گرفتن
یک نگاه at-- بر روی اپل اسناد و مدارک، آنها
یک مقدار زیادی از آموزش های واقعا خوب برای ایجاد اولین برنامه خود را.
و من شما را تشویق به انجام که به خاطر آنها شما را
از طریق تمام مراحل از آنچه که دقیقا به با کلیک بر روی ایجاد یک نرم افزار IOS.
>> اما در اینجا ما باید این برنامه های iOS.
و این یک برنامه بسیار ساده است واقعا.
اگر من این اجرا، اجازه دهید به من نشان شما آنچه در آن به نظر می رسد.
همه آن را اساسا کند آن می کشد از اینترنت یک فایل JSON
که من آن را در سرور ذخیره می شود.
و آن فایل JSON تعریف که اجازه می دهد تصاویر
من پس از آن چرخه را از طریق، در من برنامه، تصاویر را از وب سرور من.
>> بنابراین من در اینجا getNextImage داشته باشد.
این بار یک تصویر از اینترنت، و سپس آن را بر روی صفحه نمایش نشان می دهد.
>> پس از آن بسیار ساده است.
اما هدف در اینجا این است که نشان شما چگونه ما می توانیم همه چیز ترکیب
از چند هفته دوم CS50 به یک برنامه واقعی iOS است.
به عبارت دیگر، شاید یکی از چیزهایی که شما می خواهید به انجام
این است که یک نرم افزار IOS که می توانید داده ها از اینترنت جلو
و نشان می دهد برخی از اطلاعات کاربر.
که به طور کامل نقطه این کد منبع اینجا.
>> بنابراین در بسیاری به توان گفت وجود دارد چگونه به انجام توسعه در iOS واقعی.
است که بسیاری از نحو دیوانه وجود دارد که ما را دیده اند کاملا رتبهدهی نشده است
مانند یک کلاس، یک کلاس در واقع است.
ما تا حد زیادی می تواند چشم پوشی که برای هم بودن.
>> اما توجه کنید که ما حاوی در این انواع چیز
که ما در حال حاضر مانند دیده می شود توابع که نام خاص.
و هنگامی که ما آن را توابع نام صحیح
که توسط سیستم عامل iOS انتظار می رود، در واقع این احساس کمی جادویی.
اما زمانی که شما یک ایجاد نرم افزار IOS، وجود دارد
نام تابع خاص که توسط گوشی خود را به نام
به عنوان نرم افزار در حال بارگذاری است را امتحان کنید برای ایجاد فرایند است که در واقع
نرم افزار خود را اجرا می کند.
بنابراین دوباره، در بسیاری از چیزها وجود دارد که من به بیش از براق در اینجا به منظور برای ما
به بحث در مورد این به طور خاص.
اما من شما را تشویق به در نگاه شاید سمینار iOS دیگر، بلکه برخی از
از آنلاین آموزش که انجام یک کار خیلی بهتر از توصیف
اطلاعات خاص.
>> اما ما می توانیم چند چیز دید که جالب از کد را در اینجا می باشد.
توجه کنید که ما اگر اظهارات داشته باشد.
به هر حال، یکی از مهم چیزی که در مورد اگر اظهارات
این است که پرانتز در اطراف عبارت بولی اختیاری هستند.
اما آکولاد می اختیاری نیست، مهم نیست که چگونه چند و یا بسیاری از خط کد
شما در اگر بیانیه را داشته باشد.
شما نمی توانید یک دستور if دارند بدون آکولاد در سویفت.
>> و این است که، خوب، احمقانه است.
اما دلایل تاریخی برای آن وجود دارد.
قرار است تا شما را از خودتان ذخیره کنید.
مثل این به عنوان مثال، شما می توانید نیست از بین بردن آکولاد که در اطراف
اگر بیانیه.
کسانی که در واقع مورد نیاز است.
بنابراین من شما را تشویق به نگاهی به این.
اما یک بیشتر وجود دارد ساخت که من می خواهم
به شما در مورد سویفت نشان می دهد که جدید به سویفت 2.0 در مقایسه است
به نسخه های قدیمی تر سویفت، که به شرح زیر است.
بیایید ببینید که در آن من آن را به اینجا؟
>> بنابراین در این تابع به نام fetchJSON، این تابع
مسئول کشیدن که JSON است فایل را از یک URL، که فقط اتفاق می افتد
به در حال اجرا در IDE CS50 من.
من فقط شروع به آپاچی، قرار دادن فایل JSON من وجود دارد،
و من قادر به سپس کشیدن که هستم داده ها از اینترنت با استفاده از
این تابع و این URL، است که توسط تلفن ارائه شده است.
آن را توسط یک ارائه کتابخانه است که شما هنگام استفاده از
شما در حال انجام برخی از توسعه برنامه های iOS.
>> توجه داشته باشید در اینجا این است که این غیر معمول وجود دارد ساختار نحوی به نام گارد.
و واقعا همه این است که در سویفت راه تأیید است
که برخی از چیزهایی دارند است قبل از شما را ملاقات
با ادامه بقیه تابع.
بنابراین من می تواند، با استفاده از این نوع اختیاری،
من می تواند URL های پیدا کرده اند در حال اجرا از این تابع NSURL
و ذخیره سازی که به یک URL ثابت، و سپس چک کردن
برای دیدن اگر URL صفر بود، زیرا قرار بود به بازگشت یک نوع اختیاری است.
و اگر آن را به صفر بود، پس من نسخه قابل چاپ کردن خطا و سپس بازگشت.
>> اما در عوض، آنچه گارد اجازه می دهد تا ما که چیزی که بسیار است،
اما اطمینان حاصل شود که آن را در واقع این مورد که URL
شده است به درستی توسط NSURL تنظیم شده است.
و اگر آن را، سپس آن را پرش بیش از این، و آن
به شما اجازه ادامه با URL شده به درستی تعریف شده است.
اما اگر آن را مورد است که URL به درستی تعریف نشده است،
اگر این تابع یک خطا یا برخی از چیزی غیر منتظره دیگر
در واقع رخ می دهد، این ساختار گارد ما اجازه می دهد تا پس از آن خروجی که خطا
و بازگشت بلافاصله.
بله؟
>> رسید پس از آن نوع مانند یک اگر پس از آن چیز دیگری؟
DAN Armendariz به: این نوع از مانند اگر پس از آن دیگری، بله،
با این تفاوت که این URL می باشد پس از آن تعریف شده برای همه چیز زیر این.
اگر از آن عبور این گارد، سپس آن را در واقع با داده های پر شود
و قابل استفاده در باقی مانده کد منبع در عملکرد خود را.
بنابراین من شک دارم که شما در حال رفتن به شروع به دیدن این نگهبان است.
و آگاه از آن باشد.
>> پس فقط به دنبال در یک زن و شوهر از دیگر همه چیز، این حق در اینجا چه چیزی است،
شما فکر می کنید، فقط بر روی چه بر اساس ما قبل از صحبت کردن در مورد؟
>> مخاطبان: فکر می کنم آن را در لیست را اجرا کنید؟
>> DAN Armendariz به: به طوری که نزدیک است.
این یک تابع که ما در حال تعریف است.
و ما وارد آن تابع به عنوان آرگومان به این تابع در اینجا.
>> مخاطبان: صفر [نامفهوم] اگر نه.
پس از آن در این فهرست است، درست است؟
>> DAN Armendariz به: اگر خطا است صفر نیست، به طوری که is-- بنابراین من باید به حرکت کنید.
خب، بیایید ببینید، من واقعا نمی تواند به حق در اینجا حرکت کنید.
خطای یک استدلال است که در حال است به تصویب رسید به این تابع ناشناس.
این یک تابع بی نام است.
نامی ندارد.
اما ما در حال قبول این سه استدلال، داده ها، پاسخ، و خطا.
و آن است که برای بازگشت از درجه اعتبار ساقط است، بنابراین آن را به بازگشت هر چیزی.
و این مطالب است از آن تابع.
و سپس ما دسترسی در داخل که تابع برای هر یک از این استدلال است.
>> پس از آن یک گردباد است تور از زبان.
اما من با این امید، امیدوارم که شما را به
نگاهی به برخی از آموزش خاص در جهت پیشرفت iOS با سویفت،
به خصوص اگر شما به توسعه وب page-- اپل
آنها بسیاری از واقعا خوب آموزش به شما آغاز شده است.
اما امیدوارم فقط این ساعت از صحبت کردن در مورد نحو خود را داده است
شما به اندازه کافی برای دریافت با که آغاز شده است.
>> ما همه از این منبع ارسال خواهد شد کد در وب سایت سمینار
در اسرع وقت، و همچنین اسلاید بنابراین شما باید یک مرجع برای تمام کسانی که.
اما موفق باشید با پروژه های شما.
و همه شما بسیار سپاسگزارم برای آینده.
>> [تشویق حضار]