>> [Гуляе музыка]
>> Дадзены AMRMENDARIZ: Усе, Сардэчна запрашаем у CS50 семінара,
IOS App развіцця з Swift.
Я Дэн Армендарис, і я настаўнікам інфарматыкі тут у Гарвардзе.
>> І наступны гадзіну будзе беглы тур як шмат рэчаў
аб гэтай тэме, як мы можам адпавядаць.
Я буду размяшчаць ўсе зыходнага кода што вы ўбачыце сёння ў Інтэрнэце.
Мы не маглі б на самай справе ісці па ўсіх
што я, што я паказваючы вам у гэты час.
Але па меншай меры, мы спадзяемся, праз каментары зыходнага кода,
Вы зможаце паспрабаваць высветліць, што менавіта адбываецца за тыя рэчы,
што мы не зусім дабрацца.
>> У цэлым, структура сённяшняя гутарка будзе наступным.
Мы пачынаем рабіць некаторыя асноўныя Сінтаксіс з Swift мовы,
ўдаючыся ў некаторыя больш прасунутыя Сінтаксіс Свіфта мове.
Таму што мова сапраўды сучасны і яго
ёсць шмат высокім узроўні асаблівасці, рэчы, якія мы не
бачыў у C на працягу CS50 або нават некаторыя іншыя мовы
што мы пачалі выкарыстання ў CS50, як PHP,
так што я буду мець, каб паспрабаваць таксама ўводзіць некаторыя тэмы, якія
звязаныя з высокаўзроўневых моў што вы не можаце бачыць у глыбіні CS50,
але вы ўбачыце пазней камп'ютэрныя навукі класы.
Так што гэта будзе шчыльна гадзіну.
І, калі ласка, не саромейцеся, дайце мне ведаць, калі ў вас ёсць якія-небудзь пытанні.
Так што, калі вы зацікаўлены у гэтым развіццё
з Swift, або сапраўды любое развіццё IOS прыкладанне,
Ёсць некалькі патрабаванняў.
Перш за ўсё, вы павінны выкарыстоўваць Мак, працуе ў прыкладах
што мы збіраемся выкарыстоўваць сёння, адносна новая версія АС
X. У гэтым выпадку, я бягу X 10.5.
Вы можаце быць запушчаны 10.11, калі вы хочаце.
Але ўсё, што вы збіраецеся бачыце, з удзелам Xcode 7 і больш позняй версіі,
які мае апошнюю версію Свіфта, які Свіфт 2.0.
Гэта на самай справе даволі важнае адрозненне.
Шмат сінтаксіс даволі істотна змянілася
у некаторых выпадках ад Swift 1.0, які быў выпушчаны ў мінулым годзе,
Свіфта 2.0, толькі што выйшаў восенню гэтага года.
Такім чынам, мы збіраемся, каб паказаць Свіфт 2.0.
Шмат рэчаў, якія Вы шукаеце ў Інтэрнэце
калі вы спрабуеце атрымаць дадатковую інфармацыя аб розных рэчаў,
Вы можаце відавочна шукаць Swift 2
чым проста стары Swift зрабіць Пераканайцеся, што вы атрымліваеце сінтаксіс правільна.
>> На самай справе, гэта ў цэлым дакладна.
Там гэта хуткі колькасць развіцця адбываецца ў Swift мовы
З тых часоў кампанія Apple выпусціла яго, я думаю, Што, гэта было крыху больш за год
Цяпер.
І ўсё змянілася рэзка ў той час.
І так што не будуць расчараваныя калі, калі вы шукаеце вакол
па тэмах па Swift ці як выканаць то з дапамогай некаторых прыклад кода
ці нешта, што гэта не на самай справе працуе на Swift 2.0.
Пераканайцеся, што вы шукаеце спецыяльна для гэтай версіі
каб паспрабаваць звесці да мінімуму ўплыў розных версіі і тыя віды рэчаў.
>> Я паспрабую паказаць на некаторыя рэчы проста што адрозніваюцца ад старых версій.
Але гэта нешта ўпусціць.
Гэта, верагодна, будзе адзін з самых вялікіх галаўных боляў
што вы будзеце мець з Swift знаходзіць прыклад кода, які старэй, нават проста
на некалькі месяцаў, спрабуючы выкарыстоўваць гэта ў больш сучаснай праекта.
І гэта проста не працуе.
Вы атрымліваеце памылкі кампілятара, сінтаксіс Памылкі, усякія вар'яты рэчы.
Так што проста будзьце цярплівыя з што і вы, мы спадзяемся,
ёсць даволі добры вопыт з Swift ў цэлым.
>> Цяпер вы можаце на самой справе join-- і я спадзяюся, мы на самай справе да гэтага часу гэтая гэтай год--
CS 50 Яблык прыкладанне Каманда распрацоўнікаў, якія
дазволіць вам ўсталёўваць якія-небудзь прыкладання якія вы ствараеце на вашым IOS прылад.
Так зірніце на гэты URL, калі Вы зацікаўлены ў гэтым, што.
>> Так што пару рэчы, пра самую хуткай.
Гэта кампіляваная мову.
Але вы ўбачыце, што некаторыя з асаблівасцяў, якія мы выкарыстоўваем
дазваляюць выкарыстоўваць яго таксама ў трохі як інтэрпрэтаваны, як добра.
>> Шмат сінтаксісу запазычанае з C. Ён заснаваны і напісаны на C.
І такім чынам, мы ўбачым, што Ёсць шмат ежы на дом
ад існуючай ведаў з З, што мы можам порт Swift.
>> Але ёсць рэчы, якія зрабіць гэта вельмі адрозніваецца ад C.
Гэта вельмі моцна набралі.
Там гэта аўтаматычнае кіраванне памяццю.
Вы не будзеце мець, каб выкарыстоўваць Таноса або бясплатна ў любым месцы.
Ён прызначаны для абагульнення.
Такім чынам, іншымі словамі, вы можаце выкарыстоўваць яго ў усе віды кантэкстаў, з Apple Назіраць
у iPhone ўсё, аж да OS X, і нават некаторыя серверы, нават некаторыя сцэнарыяў.
Але мы бачым, што падтрымка сцэнарыяў
не зусім там яшчэ, як гэта на іншых мовах.
Так што хутчэй за ўсё вы будзеце выкарыстоўваць гэта выключна для развіцця
на вашым кампутары або ў вашым iPhone.
>> І яна мае шмат сучасных функцый.
І многія з гэтых рэчаў рэчы, якія мы збіраемся, каб паспрабаваць вырашыць сёння,
але таксама нашы тэмы, якія, шчыра кажучы, мы можам прысвяціць усю курсы.
На самай справе, CS 51, які прапанаваў у наступным семестры,
факусуюць шмат на гэтыя тэмы якія апісаны ніжэй.
Такім чынам, вы можаце правесці ўвесь семестр разуменне гэтых рэчаў.
Але мы збіраемся, каб паспрабаваць атрымаць праз іх
па меншай меры, дастаткова, каб вас можа зразумець, што
адбываецца, калі вы глядзіце у Swift праграмы
і быць у стане ўзламаць ваш шлях праз яго для канчатковага праекта.
>> Цяпер адзін з лепшых спосабаў, якімі вы можаце атрымаць дадатковую інфармацыю пра гэта
адкрыта проста праз Apple, прадаставіў дакументацыю для Swift.
Там вельмі шмат API, якія даступныя.
І гэта добрая базай для вас шукаць, канкрэтных рэчаў, якія вы
хачу зрабіць з API з удзелам IOS.
Калі вы хочаце выкарыстоўваць камеру для Напрыклад, вы можаце пачаць шукаць тут,
а таксама выкарыстоўваць Google і стэк Перапаўненне, як звычайна.
>> Любыя пытанні па гэтай перш, чым мы скакаць прама ў?
Добра.
Давайце рухацца далей.
>> Такім чынам, спачатку, у мяне ёсць Колькасць прыкладаў файлаў.
І я збіраюся паспрабаваць крок праз іх адносна хутка.
Гэта Hello World файла для Swift.
Гэта вельмі проста.
Там шлях больш каментарыяў чым ёсць рэальны код.
Звярніце ўвагу, што фактычны код знаходзіцца ў У самым нізе ў радку 14.
Гэта сведчыць друк.
І тады гэта выклік функцыі.
Мы праходзячы ў яго радок называецца Hello CS50.
Звярніце ўвагу, што няма ніякіх коскі.
Звярніце ўвагу, што няма INT асноўнай.
Там няма ні адзін з хламу, што ў нас з С.
Пры мы выкарыстоўваем Свіфта, такім чынам, які толькі што напісаў у тэкставым файле
і захоўваецца на маім кампутары, а затым Я магу скампіляваць яго і запусціце яго.
>> Звярніце ўвагу, што тут я не выкарыстоўваючы CS50 IDE.
Гэта прадугледжвае, што я працуе і што я на OS X,
і што я ўжо ўстаноўлена Xcode на гэтай машыне для таго, каб гэта
на самай справе функцыі.
Але гэта ўсяго толькі звычайны тэкставы файл што мы можам скампіляваць і рэдагаваць.
Такім чынам, давайце паглядзім, як гэта працуе насамрэч.
Што рабіць, калі я хачу, каб скампіляваць яго?
swiftc 1.Swift.
Праз некаторы час ці два, гэта ўбачыце, што мы маем цяпер
складзены гэты код у файл пад назвай 1.
І зараз мы надрукавалі нашу CS50, наша дадатак Hello World, а.
>> Звярніце ўвагу адну рэч як добра, што па змаўчанні,
мы не павінны ўвесці а / п для друку на новы радок.
Па змаўчанні, функцыя друку ў Свіфт друку новую лінію для вас.
Вы можаце перадаць неабавязковы дадатковы Параметр, каб сказаць яму, каб не зрабіць так.
Але Google для атрымання дадатковай інфармацыі аб тым, што.
Па змаўчанні, ён будзе рабіць пячатку лінію.
>> Добра, так што давайце рухацца далей затым з некаторымі іншымі рэчамі.
Так як мы можам на самай справе вызначыць зменныя?
Мы можам зрабіць гэта з дапамогай адзін з двух метадаў.
І той, які я хачу вам сказаць, о-першае, гэта хай вызначэння.
І гэта важна таму эфектыўна
тое, што мы робім, вызначаючы канстанту.
Мы збіраемся стварыць зменную, ці, хутчэй, пастаянная называецца імя,
забяспечыць яму некаторыя data-- ў гэты выпадак, радок Дан.
Але з дапамогай гэтага Хай Ключавое слова, мы кажам
што гэта переменная-- або зноў constant-- называецца
імя ніколі не будзе зменены.
Гэта збіраецца быць нязменнымі на працягу працягласць гэтай праграмы
або на працягу Працягласць кантэксце
што гэта зменная даступная.
>> Гэта сапраўды важна, што, калі ў вас ёсць дадзеныя, якія ня
збіраецца мяняць у сваёй праграме, і вы ўбачыце разнастайныя прыклады
пра тое, калі мы хочам выкарыстоўваць хай у параўнанні з іншым сінтаксісам,
важна, што вы карыстаецеся хай там, дзе гэта магчыма, таму што гэтага паведамляе
мова, што гэта не будзе зменены,
і ён можа фактычна выконваць шмат аптымізацый
для павышэння хуткасці і бяспеку вашай праграмы.
І бяспека, я маю на ўвазе не дазволіць гэта крах з вар'ятамі памылак
што мы маглі б быць прывыклі бачыць у С.
>> Тады мы можам выкарыстоўваць радок інтэрпаляцыі інкапсуляваць гэта ў радку.
Такім чынам, мы бачым у гэтым друк лініі, раздрукаваць прывітанне,
а затым з дапамогай зваротнай касой рысы адкрытыя дужкі, а затым імя майго зменнай,
у гэтым выпадку канстанты, зачыніць дужкі.
Я па сутнасці затым пакласці Змесціва гэтай зменнай называецца імем
ўнутры радка, а затым друк вынік ёсць.
>> Там яшчэ адна змена гэтага файла што што ў мяне ёсць, на самым версе,
пакласці ў хаціну лініі, якія у асноўным толькі вызначае
што я хачу, каб выкарыстоўваць Свіфт інтэрпрэтатар,
азначае, што я больш не прыйдзецца кампіляцыі гэтай праграме.
Я магу толькі запусціць яго, як свайго ўласнага сцэнара.
Але гэта, у дадзеным выпадку, за сцэны складаецца, а затым
бежится.
Гэта проста нябачныя для нас.
>> Добра, так што давайце рухацца далей.
Так што гэта крыху хітрасці што толькі што адбылося раней.
Я паказаў вам, што я можа вызначыць канстанту.
І я мог бы даць некаторыя дадзеныя, каб зрабіць гэта.
Але ў гэтым выпадку, звярніце ўвагу, што я не зрабіў на самай справе пазначыць тып дадзеных,
што гэта.
І гэта таму, што кампілятар, Свіфт можа
вызначыць тып дадзеных, грунтуючыся толькі ад дадзеных, якія я ўклаў у яе.
Таму што ён ведае, што, ацэньваючы гэта Пераменная прама тут, гэта права дадзеныя
Тут, ён ведае, што гэта радок.
І так гэта пастаяннае імя, таму будзе радок, як добра.
>> Але мы таксама можа быць відавочным аб тыпе, што гэта
мы збіраемся выкарыстаць для сталыя і зменныя
з дапамогай гэтага сінтаксіс instead-- хай імя тоўстай кішкі Радок роўная
Дэн, які ў дадзеным выпадку азначае, што мы будзе вызначаць пастаянную назвай імя.
Гэта будзе тыпу String.
І каштоўнасць будзе Дан.
Цяпер у іншы бок, што мы можам стварыць variables--
і гэтыя змяняныя зменныя, якія азначае, што мы, па сутнасці, адбываецца
змяніць іх змест небудзь у працягласці кантэксце
што гэтая пераменная defined-- мы выкарыстоўваць Вар ключавое слова, а не няхай.
Але, зноў жа, па змаўчанні, калі вы не ведаеце, што вам трэба, каб маніпуляваць, што дадзеныя,
паспрабуйце выкарыстоўваць хай для паляпшэння прадукцыйнасці.
>> У гэтым выпадку, я магу пазначыць тып дадзеных,
што мы чакаем, каб быць унутры гэта новая пераменная называецца пазнака.
Гэта збіраецца быць радком.
І мы збіраемся, каб затым злучыце два радкі разам, радок прывітанне,
і радок твары Праекта Пераменная, ці, хутчэй, імя канстанты.
>> Так што гэта добра, таму што гэта у некалькі PHP, як і ў гэтым мы
ёсць вельмі просты канкатэнацыі.
Мы не павінны аўтаматычна выкарыстоўваць якой-небудзь кіравання памяццю
павялічыць памер і рабіць якой-небудзь пацешных рэчаў там.
Гэта працуе, як мы б на самай справе чакаць.
>> Добра, якія-небудзь пытанні па гэтай нагоды?
>> Цяпер іншая прычына, што мы маем патрэбу ў вас ёсць здольнасць
каб быць у стане вызначыць, што тып зменных дадзеных з'яўляюцца
таму што часам мы не хачу, каб ініцыялізаваць зменныя
з некаторымі дадзенымі на кропка вызначэння.
Такім чынам, у гэтым выпадку, скажам, што я хачу, каб пачаць ўвод
некаторыя гатункі ў кнізе класа.
Ну, я ведаю, што адзін з зменныя, якія я хачу быць
будзе зменлівая гатунку.
І мы таксама ведаем, што мы хачу, каб гэта было цэлае.
Але, можа быць, мы яшчэ не ёсць, што гатунак даступныя.
>> У Swift, вы павінны вызначыць тып дадзеных,
які звязаны з пераменная або канстанта хай
Перш чым вы сапраўды выкарыстоўваць гэтую зменную.
Таму што гэта моцна тыпізаваных, Вы павінны асацыяваць тып
з гэтымі зменнымі.
>> Такім чынам, у гэтым выпадку, калі я не правільна ініцыялізуецца першым з некаторым значэннем,
то я павінен сказаць, што Свіфт Я чакаю, што тып дадзеных, каб быць.
І гэта застанецца што той жа тып дадзеных
на працягу ўсёй гісторыі гэтай праграмы.
>> Цяпер вы можаце быць спакуса, як толькі Я стварыў гэтую зменную класа
і пры ўмове, што ў лік 100, цяпер, калі я
хачу паспрабаваць аб'яднаць радок з гэтай колькасці,
можа ўзнікнуць спакуса па-ранейшаму выкарыстоўваць што аператар канкатэнацыі
як мы зрабілі ўсяго некалькі радкоў, перш чым.
Але, на жаль, гэта будзе на самой справе не
працаваць, таму што вы па сутнасці, выконваючы
аперацыя на двух розных тыпаў.
>> Зараз гэта вельмі адрозніваецца ад іншых Мовы, як PHP, якія сапраўды
loosey неўраўнаважаны з іх роду тыпаў.
Яны проста хацелі, ды, усе, я не хвалюе.
Проста дайце мне адзін тып і можа быць, я буду рабіць правільныя рэчы.
>> У гэтым выпадку, Свіфт надзвычай строгі пра тыпы
што вы маеце справу з.
Гэты аператар падсумоўвання або аператар канкатэнацыі
па сутнасці мае пару розныя магчымыя варыянты.
Вы можаце зрабіць сумаванне з цэлымі лікамі, ці вы
можна зрабіць канкатэнацыяй, і магчыма, некаторыя іншыя рэчы, як добра.
Але калі аператар не прызнае тое, што на абодва бакі ад яго,
ці, хутчэй, спалучэнне гэтых два тыпу, гэта не тое, што чакае,
то гэта будзе выклікаць збой.
>> Такім чынам, у гэтым выпадку, што гэта значыць мець радок плюс цэлы лік?
Добра ў кантэксце гэта, мы, верагодна, хочаце
зрабіць аперацыю канкатэнацыі.
Але, вядома, кампутар не мае, нешта з кантэксту.
І таму мы павінны забяспечыць што дадатковая інфармацыя
каб яна ведаю, што гэта з'яўляецца тое, што мы хочам зрабіць.
>> Такім чынам, іншымі словамі, з тым, што Свіфт моцна тыпізаваных
азначае, што вы павінны зрабіць трохі дадатковай працы
каб атрымаць гэта, каб кіраваць шлях, які вы хацелі б.
Але ў выніку, гэта бяспечней.
І як толькі ў вас ёсць ўзяць у кошт тых відаў,
рэчы проста адкрыта пачаць працаваць вельмі добра.
>> Такім чынам, у гэтым выпадку, мы тады б выканаць канкатэнацыяй
відавочным ліцця цэлы лік у радок
абгарнуўшы яго ў гэтым Сталіца функцыя S Радок,
а затым з дапамогай канкатэнацыі Аператар змяніць нашу зменную пазнакі,
а затым раздрукаваць яго.
>> Так далёка, так добра?
Добра, давайце рухацца далей.
>> Цяпер ёсць мноства дадзеных тыпы, якія мы можам выкарыстоўваць у Swift.
Як вы ўжо прывыклі да, мы можам стварыць змяняны масіў.
І, што масіў можа толькі змяшчаць адзін тып.
>> Такім чынам, у гэтым выпадку, мы збіраемся стварыць змяняны масіў цэлых лікаў, якія
мы будзем называць ацэнкі, і мы зможам для захоўвання, што ў гэтым квадратнай дужкі
фармат, як вы прывыкла у розных іншых мовах.
Але звярніце ўвагу, што тут мы вызначэнне пару рэчаў.
гатунку з'яўляецца змяняным переменная-- мы не выкарыстоўваць хай ключавое слова.
Дык гэта азначае, што мы можам затым змяніць змесціва гэтага масіва.
Гэта тыпу масіў Int, і мы можам сказаць, што
на аснове гэтых квадратных дужках тут.
>> Цяпер адзін з добрых рэчаў пра тое, што мы
мець доступ да шмат дадатковая інфармацыя
аб масіве толькі з дапамогай некаторыя простыя кропкавай натацыі.
Так, напрыклад, grades.count забяспечвае нас
колькасць элементаў, якія існуюць у тым, што масіў, мы можам атрымаць доступ да даволі
лёгка проста з дапамогай кропкавай натацыі, што.
>> Калі вы хочаце дадаць дадатковыя прадметы ў гэтым масіве,
Вы не можаце зрабіць стыль PHP дзе вы проста відавочна вызначыць,
па дадзеным індэксе, некаторы значэнне што вы хочаце ўставіць.
Замест гэтага, выкарыстоўвайце каманды дадання Спосаб тыпу масіва
дадаць гэты пункт, 95, да гэтага спісу.
>> Так што зараз гэты масіў мае наступнае contents-- 100, 0, 90, 85.
І зараз мы прыклалі 95 да таго, што, як добра.
>> Ёсць і іншыя спосабы мы можам дадаць рэчы.
Вы можаце выкарыстоўваць аператар падсумоўвання,
які будзе інтэрпрэтавацца як аперацыя масіў даданнем.
І вы можаце дадаць яшчэ адзін, то Масіў, змесціва якога 70 і 80,
у гэтым масіве.
Так што цяпер у нас ёсць Утрыманне ў гэтай зменнай
grades-- 100, 0, 90, 85, 95, 70 і 80.
Гэта проста міленькі сінтаксічны цукар, які забяспечвае Свіфт нам.
>> Так што, калі мы хочам, каб падсумаваць гатункаў, мы, магчыма,
захоча паўтараць над кожным пунктам у гэтым цыкле.
І ў нас ёсць, у Свіфта, паняцце А для цыклу, як можна было б чакаць.
Але шлях, які мы паказваем дыяпазон трохі адрозніваецца.
Такім чынам, у гэтым выпадку, каб Падводзячы ўсё, мы будзем
збіраецца стварыць часовы Пераменная называецца сума для таго, каб нас
каб захаваць гэты конт.
>> І заўважце, наш для цыкл будаўніцтва тут.
Для індэкса ў 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 будзе на самой справе выканаць сумаванне кошту гэтага
таму што індэкс, у гэты выпадак, цэлы лік.
І ў той момант, ён будзе Затым быць ператвораныя ў радок
і ў гэты радок тут, і раздрукаваць, як можна было б чакаць. ,
>> І добрая рэч аб масівах тут
што мы таксама ў стане мець Выманне значэння і значэння параметраў
выкарыстоўваючы квадратны абазначэння кранштэйн як мы бачылі ў іншых мовах.
>> Добра, так тут, мы цяпер вылічыць наш суму ўсіх нашых марак.
Цяпер накшталт наступнага лагічным крокам было б
зрабіць аперацыю дзялення, каб знайсці з сярэдняга гэтых марак.
Але нешта важнае тут адбываецца, які
з'яўляецца тое, што гэтая сума можа быць, цэлы лік.
Але мы павінны выканаць некаторыя Сартаваць падвойнага дзялення.
І гэта будзе надзвычай важна, калі
мы хочам, каб выканаць гэтую аперацыю, таму што тое, што мы гаворым,
з'яўляецца тое, што мы на самай справе трэба выконваць дзяленне на два двухмесных.
І зноў, таму што Свіфт вельмі моцна набралі,
мы павінны відавочна ўсталяваць ўсе прадметы ў парным разрадзе, перш чым мы на самай справе
выканаць гэтую аперацыю.
>> Так для таго, каб нас выконваць двайную падзел,
гэта не дастаткова толькі для аднаго з тых пунктаў, якія будуць у два разы.
Абодва з іх павінны быць двойчы для таго, каб хуткім
каб пераканацца, што гэта гэта тое, што мы хочам зрабіць.
Такім чынам, мы тады відавочна прывядзенне сума, якую мы вылічаецца вышэй
і колькасць гатункаў да падвойваецца, і затым выканаць гэтую аперацыю і крама
што ў гэтым новым зменнай, або, хутчэй, гэта новая пастаянная называецца сярэднім
якія будуць мець які тып, вы ўяўляеце?
Двухмесны, так.
Такім чынам, у гэтым выпадку, мы ня трэба паказваць яго
таму што гэта можа быць выведзена з праца, які тып дадзеных у сярэднім
будзе.
І Свіфт правіла, вельмі добра аб тым, у стане вывесці тыпы.
>> Вы хочаце, каб гэта бегчы, ці я магу рухацца далей?
Я хачу, каб працягваць ісці.
Любыя пытанні па любой з гэтага?
Выдатна.
>> Цяпер мы збіраемся, каб пачаць, каб дабрацца да добрыя stuff-- якія вызначаюць функцыі,
і некалькі іншых тыпаў, якія унікальным для Swift, што ў вас няма
відаць на іншых мовах да гэтага моманту,
але яны прысутнічаюць у іншым мовы, якія вы маглі б знайсці пазней.
Такім чынам, спачатку, калі вы хочаце вызначыць функцыю,
Вы вызначаеце яго з фанкі словы Функцыя, а затым імя функцыі,
а затым у дужках, аргументы што вы хочаце, каб функцыя прыняць.
Аргументы павінны таксама specify-- generally--
неабходна таксама пазначыць тып дадзеных, якія яны, калі яны не могуць быць выпадковымі.
І мы ўбачым, што крыху перасцярога ў толькі крыху.
>> Такім чынам, у гэтым выпадку ў нас ёсць Функцыя называецца printGradeCount.
Мы збіраемся прыняць переменная-- ці, хутчэй, у дадзеным выпадку,
constant-- называецца заліковую кніжку.
І гэта будзе мець тыпу масіў з цэлых лікаў.
Зараз ёсць нешта што сапраўды важна тут
што я хачу, каб вы зразумелі.
Гэта, што па змаўчанні гэтыя аргументы што ўваходы ў гэтай функцыі
вызначаецца з няяўнай, хай ключавое слова, Гэта азначае, што я не магу змяніць гэта
заліковую кніжку зменнай.
І што-то мае сэнс, таму што вы перадаеце дадзеныя ст.
І вы, магчыма, не хочаце яго каб быць зменены з-пад вас.
Можна адзначыць відавочна што гэта з'яўляецца зменнай, змясціўшы
пад рызыкай Ключавое слова тут.
Але гэта глюк, што мы заўважыў людзі зрабілі ў мінулым
з'яўляецца тое, што яны меркавалі, што гэта будзе каб быць зменнай, калі, на самай справе, гэта
з'яўляецца канстантай.
>> Добра, так вось тады, у гэтым выпадку, мы не паказаўшы любы тып якое вяртаецца значэння.
Мы пакажам вам, як зрабіць што у хвіліну.
Але звярніце ўвагу, што тут мы маем просты, калі стану.
Калі гэта заліковую кніжку пустым, які ў дадзеным выпадку
гэта проста ўласцівасць гэтага ліку Масіў, то раздрукаваць нешта.
У адваротным выпадку мы робім нешта яшчэ.
>> Даволі проста да гэтага часу, я думаю.
Але спыніць мяне, калі ў вас ёсць якія-небудзь пытанні.
>> Зараз гэтая функцыя, у сярэднім, таксама прымае некаторыя аргументы, ці, дакладней, адзін аргумент,
які з'яўляецца заліковую кніжку, і на гэты раз збіраецца вярнуцца двайны тып.
Таму што вылічэнні сярэдняя, ​​і гэта
адбываецца на самай справе, што вярнуцца кампутарная сярэднім выклікалай лініі.
>> У гэтым выпадку, мы пазначыць вярнуцца тыпу пасля стрэлкі.
І гэта можа адчуваць сябе крыху дзіўна на першы погляд.
Вы прывыкла усталяванню вяртанне
тып перад імем функцыі.
Але калі вы думаеце пра гэта з пункту гледжання матэматыкі,
напрыклад, калі ў вас ёсць матэматыку якія вызначаюць функцыю,
ў вас ёсць функцыя з некаторымі Ўваходы, і выдае выхадны сігнал.
І гэта менавіта тое, што гэта, як мяркуецца, каб імітаваць.
І ёсць некалькі іншых моў якія маюць падобны сінтаксіс, а таксама,
але, верагодна, не, што ні адзін вы бачылі ў CS50.
Але да гэтага часу не бянтэжцеся гэтым.
Стрэлка азначае, што адбываецца павінны быць вернутыя ў гэтым выпадку.
Такім чынам, як мы збіраемся вылічыць гэта сярэдняе?
Ну, калі заліковую кніжку пусты, а затым мы
збіраецца вярнуцца 0, што, можа быць, разумны спосаб лячэння гэтага.
Я не ведаю, давайце прыходзяць вярнуцца да гэтага ў трохі.
Гэта не можа на самай справе быць разумным спосабам
вылічыць сярэдняе калі у нас ёсць пусты заліковую кніжку.
>> Тады мы проста выконваем сваю сумаванне.
Звярніце ўвагу, што тут мы на самай справе ёсць альтэрнатыўны варыянт
цыкл, што дазваляе для перабору над кожнай пазіцыі ў масіве
і змесціце кожны элемент у сваю зменную.
Паказаўшы на класе ў заліковую кніжку, што мы гаворым,
з'яўляецца тое, што мы збіраемся няяўна стварыць новую канстанту пад назвай
гатунак, які будзе прадстаўляць кожны унікальны прадмет у заліковую кніжку
кожны раз, што для цыклу ітэрацыі.
Так у першы раз, што гэта запусціць, клас будзе
першым пунктам у заліковую кніжку.
У другі раз гэта будзе Другі пункт, гэтак далей, і гэтак далей
да заліковую кніжку не мае вычарпала сябе элементаў.
Тады мы зможам падвесці, што пераходзяць у нашай зменнай падсумоўвання
і вярнуцца на нашу сярэднюю як мы бачылі раней.
ОК, якія-небудзь пытанні?
Да?
Залы: У мяне два пытанні.
Нумар адзін, гіпатэтычна, можа запусціць цэлае на гэтым?
Не трэба быць двойчы, гэта правільна?
Дадзены AMRMENDARIZ: Ці можаце вы паўтарыць гэтае пытанне?
АЎДЫТОРЫЯ: Ці магу я зрабіць лік як сярэдняе?
Дадзены AMRMENDARIZ: Ці можаце вы зрабіць цэлае, як у сярэднім?
Так вяртаюць цэлы лік, Сярэдняя замест двайны?
>> АЎДЫТОРЫЯ: Return-- вас ёсць, што цяпер ніжэй.
Дадзены AMRMENDARIZ: Прама тут, вярнуцца 0.0?
АЎДЫТОРЫЯ: Так, проста вярнуць 0.
Дык гэта будзе альбо 80 або 85, але не 85,2.
>> Дадзены AMRMENDARIZ: Такім чынам, у гэтым выпадку, так што пару розныя спосабы
адказаць на гэта.
Дазвольце мне адказаць на іх у парадку.
Так што, калі я проста зрабіць гэта вяртанне 0, а 0 з'яўляецца цэлым лікам.
І так, што выкліча Памылка тыпу ў гэтым выпадку
таму што ён чакаў двайны але затым вяртаюцца цэлае.
Калі я хачу, каб вяртаць цэлы лік, я магу.
Я магу ўсталяваць тып якое вяртаецца у цэлае, вярнуцца сюды 0,
і не выконваюць двайную дзяленне.
Але тады мы былі б робіць цэлае падраздзяленне.
І так мы тады не атрымалі б Сярэдняя што мы, магчыма, чакалі.
Але так, мы можам змяніць тыпы такім чынам.
>> АЎДЫТОРЫЯ: А па-другое, вам ёсць адзін двайны на вяршыні.
Але ўнізе, калі вам зрабіць вярнуцца двайны двайны,
што ўжо аўтаматычна вяртанне падвойным фармаце.
Чаму вы ўсё яшчэ павінны вызначыць яго са стрэлкай на вяршыні з двайны?
>> Дадзены AMRMENDARIZ: Так У выпадку, гэта частка
з the-- так, каб паўтарыць пытанне, таму што гэта невідавочнае ад вяртання
тыпы тут, тое, што гэта на самай справе тып , Мы павінны быць дакладна з Свіфт
пра тое, што мы хочам, каб вярнуцца з гэтай функцыі
так што, калі ён выконвае тып праверкі, ён можа пераканацца, што
што тое, што мы на самай справе напісана унізе на самай справе адпавядае гэтаму.
Так што гэта накшталт як праверкі з самім сабой свайго роду сітуацыі.
Але are--
>> АЎДЫТОРЫЯ: [неразборліва] стрэлка?
>> Дадзены AMRMENDARIZ: Ёсць выпадкі, калі мы можам паказаць, што мы можам няяўна
ўсталяваць тып якое вяртаецца значэння.
Але ў гэтым выпадку, я не думаю, што будзе працаваць.
Там нейкая іншая сінтаксіс што мы ўбачым пазней.
>> Добра, так што гэта крыніца код трохі адрозніваецца
таму што гэта разбірае аргументы з функцыя, мы называем.
Дазвольце мне паказаць вам, як гэта працуе перш, чым мы на самай справе рухацца далей
у некаторых цікавых рэчаў што адбываецца ў Swift.
>> Такім чынам, у гэтым выпадку, калі я проста запусціце гэты Код, заўважыць, што тое, што ён робіць
is-- у той час, гэта свайго роду дае мне дзіўныя памылкі.
Мне трэба, каб перадаць ёй пару цэлыя як аргумент каманднага радка.
Такім чынам, давайце паглядзім, 150 і 80, і ціснем Enter каб высветліць, што гэта на самай справе робіць.
Гэта прыняцце кожнай з гэтыя значэння як цэлыя лікі.
Гэта ўводу іх у заліковую кніжку.
І тады ён выконвае што сярэдняя разлік
і вываду, што, як мы чакалі.
>> Але, відавочна, што нешта адбываецца з гэтай якая адпрэчвае то
то як цэлае.
Як вы, магчыма, памятаеце з калі мы былі справу з аргументамі каманднага радка
у З і іншых мовах, першы 0-й элемент у гэтай аргументу каманднага радка
Спіс назву каманды што мы на самай справе выконваюцца.
Такім чынам, у гэтым выпадку, я проста цыкл больш за ўсіх аргументаў каманднага радка.
Але я не раблю якіх-небудзь фантазіі праверыць прапусціць што першы.
Я проста відавочна або няяўна Я праверкі, які з гэтых тыпаў
цэлыя лікі, перш чым я на самой справе выканаць гэта вылічэнне.
>> І гэта, па сутнасці тое, што тут адбываецца.
Для кожнага аргументу ў аргументы працэсу,
Я збіраюся выканаць некаторыя праверкі.
І ў гэтым выпадку, я збіраюся паспрабаваць спачатку пераўтварыць
што аргумент на цэлае шляхам выканання яўнага прывядзенне тыпу,
таму што гэта, на ўваходзе, радок і на самай справе не цэлы лік.
>> Але гэта свайго роду дзіўны сінтаксіс, калі дазволіць адзнака роўная Int (аргумент).
Што на самой справе адбываецца тут надзвычай
важна, каб ваш выкарыстаннем Swift.
Гэта тое, што з дапамогай называецца дадатковы тып.
>> Такім чынам, гэта функцыя, Int (аргумент), вяртае не толькі цэлы лік, а вяртаецца
тое, што называецца неабавязковым цэлым.
І такім чынам, гэта свайго роду тып зверху тыпу.
Вы можаце сартаваць прадставіць гэта, як гэта вяртанне, як пакет.
І калі вы адкрываеце, што Пакет, ён альбо
мае цэлы лік, якое з'яўляецца вынікам, або гэта не мае абсалютна нічога ў ім на ўсіх.
І гэта карысна ў якасці праверкі на памылкі Механізм, таму што ў гэтым выпадку
мы можам даведацца, гэта было Пераўтварэнне паспяховым выглядам?
Калі гэта так, то гэта на самай справе будзе мець цэлае ўнутры.
У адваротным выпадку гэта будзе мець некаторыя Значэнне, якое мы будзем называць нулявым, што
з'яўляецца прадстаўніком цэлага не на ўсіх.
Гэта сапраўды прадстаўнік нічога.
>> І так гэта, калі будаўніцтва дазваляе нам разгарнуць гэты пакет,
што дадатковы звязвання.
І калі мы ў стане разгарнуць, што пакет і знайсці цэлае ўнутры,
тое, што мы гаворым тут з'яўляецца тое, што мы будзем затым
дазваляюць гэта значэнне ўстаноўлена ў быць гэтая пастаянная называецца гатунак.
І гэтая частка, калі заяву, верхняя частка, калі заяву
будзе працаваць, таму што гэта разгортваць быў паспяховым.
>> Калі так здарылася, што адбылася памылка, магчыма,
у гэтым яўнага пераўтварэнні тыпу з радка ў цэлы лік, можа быць,
гэта значэнне АВС напрыклад.
І гэта на самай справе не збіраецца пераўтварыць у цэлы лік.
Затым ён вернецца нуль, які не з'яўляецца цэлым лікам.
І гэта, калі заяву і затым правал.
ацэнка не будзе існаваць, таму што яна не мае цэлалікавых змест.
І ён будзе працаваць замест гэтага яшчэ блок.
Да?
>> АЎДЫТОРЫЯ: Ніл з'яўляецца N-я-L?
Дадзены AMRMENDARIZ: нуль з'яўляецца N-я-Л, так.
>> Так што гэта, магчыма, адзін з цяжкія рэчы пра Swift,
асабліва, калі вы знаходзіцеся ў пустазелле на дадатак IOS
і вы на самой справе спрабуе зрабіць некаторыя распрацоўкі ёсць.
Гэта будзе крычаць ў вас аб неабавязковай.
Гэта будзе прасіць вас за пытальнікі і клічнікі.
Але як толькі вы зразумееце out-- калі вы прысвяціць некаторы час, каб высветліць,
што адбываецца з дадатковымі відамі, Вы зэканоміце шмат галаўнога болю
як вы спрабуеце напісаць прыкладанне ў Swift.
>> Гэта на самай справе вельмі магутная функцыя.
І вы проста павінны прыняць мае словы для яго цяпер.
Але мы ўбачым, гэтую канструкцыю і некаторыя іншыя падабаецца
у некаторых іншых зыходным кодам, які мы пакажам вам, у толькі няшмат.
>> Ці ёсць нейкія першапачатковыя пытанні тут?
Такім чынам, важна, вынас з'яўляецца тое, што дадатковы тып роду метатип.
Яна альбо ёсць значэнне, і калі гэта так, то гэта
будзе, магчыма, ёсць што значэнне, звязанае з ёй, або яна не мае ніякай каштоўнасці,
і яна прадстаўлена нуль.
Астатнія гэта, бадай, як вы чакаеце.
>> Такім чынам, давайце нарасціць Цяжкасць яшчэ раз.
І на гэты раз, давайце зірнем на некаторыя іншыя тыпы дадзеных, якія на самай справе існуюць.
Адным з іх з'яўляецца слоўнікі, які вельмі падобны на Python слоўнікаў.
Гэта некалькі падобна на хэш-табліцы ў С. Па сутнасці, гэта адлюстраванне ключоў
дзе ключы могуць быць радкамі.
І калі вы глядзіце на гэтыя ключы, гэтыя ключы будуць мець значэнне.
Так што гэта не зусім масіў, але замест гэтага, больш цесна звязаны
у хэш-карце або хэш-табліцы.
>> Давайце паглядзім, як гэта павінна працаваць, перш чым мы на самай справе
перайсці ў самой зыходнага кода.
Калі я проста запусціце гэта, на самай справе нічога не адбываецца.
Гэта кажа мне, што я чакаў некаторыя параметры наступнага тыпу.
Так што я збіраюся даць гэта некаторыя імёны праблема ўсталяваць,
так pset0, можа быць, я атрымаў 100.
І pset1, я атрымаў 5.
І тады на экзамене, я зрабіў вельмі добра, і атрымаў 30.
І ой, я ўдарыў прастора тут.
>> Калі я трапіў Enter, вы можаце ўбачыць ён выконвае некаторыя вылічэнні.
Гэта кажа заліковую кніжку ў тры гатункаў, pset1, pset0, іспыт.
І заліковую кніжку мае гэты канкрэтны сярэднім.
Такім чынам, яшчэ раз, мы працуем з гэтай ідэяй заліковую кніжку,
але мы будзем працягваць ітэрацыі са складанасцю нашай функцыі.
>> Так у пачатку, мы проста збіраецца стварыць функцыю, якая
нясе адказнасць за выкарыстанне друку.
І ёсць гэты выхад функцыя, якая будзе проста
сілком выйсці з прыкладання.
Гэта не тое, што Вы будзеце выкарыстоўваць у IOS прыкладанне.
Гэта толькі ў гэтым выпадку, з аргументам каманднага радка.
Далей мы пачнем рухацца ў бок Xcode.
Але гэта ставіцца толькі да каманды Праграма Стыль лініі ў Swift.
>> Давайце зірнем на некаторыя з цікавыя рэчы тут.
Давайце паглядзім, толькі пару цікавыя рэчы кажучы, магчыма,
з'яўляецца тое, што ў маёй функцыі друку колькасць гатункаў,
Вы маглі б успомніць, што ў мяне гэты спіс з items-- pset1, pset0, і іспыт.
Вы можаце на самой справе хутка і лёгка зрабіць гэта
узяўшы заліковую кніжку, якая з'яўляецца Слоўнікі, якая мае ключы і значэння.
Знайсці ўсе клавішы праз метад ключы кропка тут,
а затым выкарыстоўваць гэтую joinWithSeparator, якія будуць затым усё ключы
што мы ўвялі ў, pset1-- або прабачце, pset0, pset1 і exam--
і аб'яднаць іх разам праз коску і прабел
каб стварыць адну доўгую радок.
Гэта аперацыя зліцця проста фенаменальна карысна ў розных кантэкстах.
І так гэта joinWithSeparator.
>> І гэта адна рэч, якая змяняецца ад 1 да Swift Swift 2.
Там калісьці Python style-- калі вы
знаёмыя з Python-- пітона стыль далучыцца метад на радках.
Але, што больш ня у выпадку Swift 2.
Вы хочаце, каб выкарыстоўваць гэта, калі вы хочаце каб аб'яднаць масіў матэрыялу
разам са радком.
>> Так што, магчыма, то ў нашым абмеркаванне сярэднім раней,
гэта робіць трохі больш сэнсу для нас, каб усталяваць сярэднюю функцыю
каб быць неабавязковым, а двойчы чым проста яўнага ўдвая.
Таму што мы былі, што незвычайнае стан, калі,
што, калі на самай справе заліковую кніжку не мае значэння ўнутры яе?
Што павінен сярэдняя прыбытковасць?
>> Ну, можа быць, у C вы зрабілі б нешта
як прадугледжана значэнне дазорнай, як 0.0, або, можа быць адмоўным лікам,
або што-то проста, які ўяўляе той факт, што існуе некаторы стан памылкі
і вы, магчыма, на самай справе не маюць здольнасць вылічыць, што ў сярэднім.
Ну прыгажосць паказаўшы дадатковы тып будзе гэта рабіць.
І я цяпер гавораць усе гэтыя словы, але гэта на самай справе не выкарыстоўваць АБСТАЛЯВАННЯ.
Але мы бачым, што ў толькі што хвілін, дзе мы можам усталяваць сярэдні
каб быць неабавязковым тыпам дадзеных, так што калі гэта на самай справе вяртае некаторыя дадзеныя, а затым
мы вернемся да гэтых дадзеных.
У адваротным выпадку мы вернемся нуль, кажуць, што гэта
не мае значнага вылічэнняў.
>> Давайце пяройдзем да нешта яшчэ.
Так адсюль, мы глядзелі на усе гэтыя прыклады ў камандным радку.
Але на самой справе тое, што вы збіраецеся каб мець справу з з'яўляецца Xcode.
І адна з добрых рэчаў аб Xcode з'яўляецца, і ў прыватнасці, у Swift,
з'яўляецца тое, што ў нас ёсць гэта што называецца дзіцячая пляцоўка.
І гэта пляцоўка зусім не прыкладанне IOS.
Але гэта дазваляе эксперыментаваць з Свіфт ў вельмі просты спосаб.
Вы можаце ўвесці увесь код.
Гэта прыгожа з падсветкай сінтаксісу тут.
Пры стварэнні новага файла, ён будзе прасіць Вы, калі вы хочаце стварыць Экспазіцыя.
Але добрая рэч аб пляцоўка з'яўляецца тое, што ў правай частцы акна,
гэта на самай справе паказаць вам, Выхад з вашага кода.
Так што, калі я пракруціць ўніз, мы можам бачыць, што выхад розных радкоў кода
на самай справе адбываецца, каб быць.
>> Такім чынам, у гэтым выпадку, мы збіраемся Змяненне напрамкі толькі крыху
і казаць пра нешта, што сапраўды Важна гэтую высокую чынам ўзроўню
што Свіфт працуе, і яго гэтая ідэя замыканняў.
І вы, напэўна, бачылі гэта трохі ў JavaScript.
Для тых з вас, у CS50, замкі
вельмі папулярныя, вельмі добры спосаб зрабіць рэчы высокага ўзроўню ў сучасных мовах.
Але гэта таксама свайго роду цяжка абгарнуць вакол галавы ў першы раз.
Так што калі вы шукаеце на гэта першы раз, гэта нармальна.
Проста паглядзіце на зыходны код і паглядзець, калі вы можаце зразумець гэта ў сябе дома.
>> Такім чынам, у гэтым выпадку, давайце скажам, што мы хочаце стварыць шмат індэксаў
з некаторым фіксаваных значэннем.
Такім чынам, у гэтым выпадку я магу стварыць функцыю.
Я буду называць яго магутнасць 2 чыя адзіная мэта ў жыцці
гэта зойме некаторы ўваход і двойчы гэта, і вярнуць гэта значэнне.
Звярніце ўвагу, што тут я прымаючы адзін тып дадзеных.
Гэта будзе пераменная называецца х.
Гэта тыпу Double.
І я збіраюся вярнуць Двухмесны тут.
І я проста хачу, каб зрабіць вельмі, шчыра кажучы, даволі
наіўна спосаб падваення гэта значэнне.
І я пакажу вам, чаму гэта Карысна ўсяго секунду.
>> Звярніце ўвагу, што тут мы маем гэты дыяпазон зноў. што-то ў 1, кропка
кропка кропка, 2, што азначае, што гэты цыкл будзе працаваць у два разы.
Але гэта ўяўляе сабой фіктыўную зменную.
Гэта азначае, што я на самой справе не збіраецца выкарыстоўваць гэтую зменную ў любым месцы
ўнутры гэтага цыклу.
Я проста хачу гэтую лінію кода для запуску ў два разы,
без неабходнасці ведаць значэнне гэтага дыяпазону.
>> Такім чынам, у гэтым выпадку я бягу вынік раз х двойчы, што, па сутнасці
азначае, што я квадратуры гэта значэнне.
І гэта адбываецца ў працаваць, як мы чакалі.
Магутнасць 2, перадаўшы значэнне 2.0 дае нам выхад 4.
3.2 Працы па 10.24.
>> Цяпер мы можам зрабіць падобны што за ўладу 3.
Але цяпер змяніць толькі выбар.
Для фіктыўнай зменнай у 1 праз 3, памножце 3 разы,
і зрабіць тое ж самае.
>> Так што гэта можа адчуваць сябе крыху надуманых.
Але ёсць важны што тут, які
з'яўляецца тое, што, гледзячы на ​​іх дзве функцыі, ёсць
толькі адна рэч, якая адрозніваецца, які гэта значэнне ў дыяпазоне.
Усё астатняе аб гэтых двух функцыі, сіла і ўлада сакавіка 2,
з'яўляюцца, па сутнасці, ідэнтычныя, паколькі яны працуюць такім жа чынам.
>> Такім чынам, на дадзены момант, трохі Трывожны званок павінен ісці прэч.
Спадзяюся, што вы кажаце, Вы ведаеце, гэта адчувае сябе крыху
як дублявання высілкаў.
Можа быць, ёсць спосаб, які я б мець магчымасць інкапсуляваць ўсё гэта
і забяспечваюць функцыю або стварыць функцыю, якая
робіць менавіта тое, што я жадаю, не неабходнасці ўвесці яго ў відавочным выглядзе.
І гэта тое, што ўлада з закрыцця дазваляе нам рабіць.
Такім чынам, давайце зірнем на гэта.
І я буду марнаваць пару хвілін на гэта, таму што гэта
даволі важна для Swift.
Мы бачым гэта ўвесь час.
Мы збіраемся, каб вызначыць функцыю.
Гэта будзе называцца powerOf.
Гэта збіраецца прыму ў параметр, званы ў тыпу Int.
Але зірніце на тып вяртання.
Які вяртаецца тып, у дужкі, Двухмесны падвойную стрэлку.
Гэта азначае, што гэтай функцыі, гэтая функцыя powerOf,
вяртаецца функцыю.
Гэта прымае двайную і вяртанне ў два разы.
Так што можа здацца роду вар'ятам, але давайце пракруціць ўніз трохі
і паглядзіце, што адбываецца.
Мы ўнутры гэтай функцыі powerOf.
Мы ствараем новую функцыю называецца exponentiator,
але гэта не мае значэння, што гэта такое.
>> Звярніце ўвагу, што гэта мае уваходнае значэнне х.
І яно прымае ў двухмесным і вяртанне ў два разы.
І гэта той жа самы код, што мы бачылі вышэй, за выключэннем таго, што значэнне 2
ці значэнне 3, што Верхняя мяжа гэтага дыяпазону,
быў заменены на Гэта значэнне г, што
быў першапачатковы параметр нашай функцыі powerOf.
І ў гэты момант, мы вярнуцца exponentiator.
Мы вяртаемся з функцыі.
>> Гэта накшталт як трохі страшэнна.
Але давайце прадставім, што адбываецца калі я выклікаць гэтую функцыю powerOf
і перадаць у яго некаторы значэнне, як 2.
Што гэта азначае, што Цяпер у мяне ёсць значэнне
2 пры у, што азначае, што гэта значэнне у гэтай функцыі exponentiator
будзе тое, што значэнне 2.
Але я вяртаюся гэта Функцыя exponentiator.
>> Так заўважаць, што Свіфт кажа, што я стварылі ў гэтым выпадку.
хай квадрат вызначэнне, гэта гэта функцыя, якая прымае двайную
і вяртае ў два разы.
Я стварыў функцыю нешта квадратаў
з дапамогай гэтага механізму прама тут.
І на самай справе, што адбываецца па-за што яна вяртаецца гэтую функцыю
exponentiator, але гэта значэнне у абгорнутая ўнутры яго.
І вось цяпер кожны раз, калі я выкарыстоўваю гэта пераменная або канстанта называецца гэта
квадрат, то гэта будзе паводзіць сябе як функцыі.
І таму я магу назваць тое, што пераменная як я б выклікаць функцыю,
і перадаць у яго шэраг, як у дадзеным выпадку 3.
І я тады квадрат гэтага значэння.
То так будзе квадрат 3 стаць 9, як мы бачым тут.
>> Сапраўды з розуму, але гэта цяпер дазваляе мне магчымасць
ствараць іншыя функцыі powerOf.
Як я магу сказаць, добра, добра цяпер я хачу каб стварыць новую функцыю, powerOf (3),
і захоўваць, што ў пастаянная называецца куб.
А цяпер куб будзе асобная функцыя, якая будзе затым
заняць некаторы значэнне ў якасці ўваходных дадзеных і куба, Значэнне, як мы можам бачыць у ніжняй радку
тут.
куб 2 будзе прыводзіць у 8.
>> Спадзяюся, даволі акуратныя рэчы.
Вы ніколі не бачылі гэта раней.
Я заклікаю вас, каб паглядзець у закрыццё і даследаваць гэта крыху больш.
Гэта сапраўды магутная штука, мы бачым шмат у JavaScript і некаторых іншых мовах.
Гэта сапраўды важна для разуменне API, а таксама
што мы атрымаем у толькі секунды.
Да?
>> АЎДЫТОРЫЯ: Калі вы робіце powerOf (2), дужка, а затым
іншы дужкі, іншы input-- Вы ў асноўным замяніў квадрат.
Дадзены AMRMENDARIZ: Так што глядзіце ў самы апошні лініі тут.
Гэта на самай справе цалкам можна зрабіць ланцужок, як Вы прапанавалі.
Так powerOf (5) азначае, што мы збіраемся мець exponentiator з 5 тут.
Так што гэта, па сутнасці, стане Тое ж самае як 4 у пятай ступені,
таму што мы стварылі потенцируя функцыянаваць у пятай ступені,
і мы перадаем у што функцыянаваць значэнне 4.
І мы атрымліваем, што значэнне што мы чакаем, 1024.
АЎДЫТОРЫЯ: І гэта не назавеце, так яна лягчэй
чытаць, плошча незалежна.
>> Дадзены AMRMENDARIZ: справа, дакладна.
Таму, перш чым я проста пакласці яго у пастаяннай вось так
што ён зрабіў гэта лёгка выкарыстоўваць гэтае імя.
Да?
>> АЎДЫТОРЫЯ: У гэтым кантэксце powerOf, гэта частка
мовы праграмавання у адрозненне ад вас, як
думаць пра powerOf ў [неразборліва]?
Дадзены AMRMENDARIZ: Так У гэтым выпадку, powerOf
гэта проста назва з функцыя, я вызначыў тут.
Так што гэта не ўласціва на самай мове,
але замест гэтага, гэта проста гэта функцыя, якая мае
што імя, таму што я даю яму гэтае імя.
Любыя іншыя пытанні?
Добра.
>> Зараз гэта выдатна.
Але вы не збіраецеся, каб убачыць Шмат функцый замыканне,
, Як гэта, дзе вы вызначаеце, унутры адной функцыі, іншы функцыі.
І вы можаце зрабіць гэта.
Але гэта, здаецца, не сапраўды неабходна, ці не так?
Як, чаму я вызначыць гэта Функцыя называецца exponentiator
а затым адразу ж вярнуць яго.
Чаму я не магу проста адразу вярнуцца гэтую функцыю?
>> І на самай справе, гэта менавіта ідэя канцэпцыі называецца
ананімныя функцыі, дзе ананімныя функцыі на самай справе не
ёсць імя, таму што яны ня трэба ёсць.
І таму ў дадзеным выпадку, у 7В, мы можам знайсці менавіта гэта.
Гэта ўсё той жа код, робіць тое ж самае,
але зараз мы змянілі яго крыху, такім чынам што гэтая функцыя неадкладна powerOf
вяртае функцыю.
Звярніце ўвагу, што пасля вяртання, ёсць адкрытая фігурная дужка.
Гэта чакаючы гэты ўваход Падвойны.
Гэта чакаючы, што выхад Double.
І тады ў ключавое слова аддзяляе сам код.
Так што гэта ананімная функцыя.
Гэта на самай справе не мае назвы, у той час як перш чым ён быў названы exponentiator.
Але, як мы бачылі, на самай справе проста не адносяцца да exponentiator
за межамі гэтай функцыі.
Так што не мае значэння.
Так што гэта ананімная функцыя з'яўляецца так званы, таму што гэта безназоўны,
але ён па-ранейшаму выкарыстоўваецца У кантэксце дадзенага кода.
>> Наступныя пару тыя, якія я збіраецца працягнуць спадзяюся,
дзьме ваш розум трохі.
Мы можам спрасціць гэта нават больш.
Таму што, як было пранікліва адзначалася раней,
магчыма, мы на самай справе ведаем, па вывядзенне з гэтага кода, тое, што
выхад гэтага кода будзе.
І на самай справе, у гэтым ананімнай функцыі, мы можам зрабіць выснову, на самай справе тыпы дадзеных.
>> Так што ў гэтым, мы больш не неабходна відавочна вызначыць
тып дадзеных, які з'яўляецца ўваход і выхад з гэтай функцыі
на працягу некалькіх прычын.
Адным з іх з'яўляецца, што мы вызначылі, да на Прататып функцыі ўключэння,
які тып дадзеных гэтага ананімных функцыя павінна ўваход і выхад.
І з другога боку, мы можа вывесці з кода
сюды, што мы прымаем ўваход, які мае тып двайны
і вяртанне ў два разы.
>> Звярніце ўвагу, што тут мы маем відавочна не вызначаны імёны аргументаў
што гэтая функцыя прымае.
І так мы бачым, мы можам звярнуцца да гэтыя параметры, выкарыстоўваючы $ 0, $ 1,
гэтак далей, і гэтак далей, у залежнасці ад колькасць гэтага параметру выкарыстоўваецца
у гэтай функцыі.
>> Гэта тое, што вы збіраецеся каб убачыць шмат гэта адкрытая фігурная дужка
Вызначэнне суправаджаны $ 0, а затым некаторыя аперацыі,
а затым закрытая дужка.
Гэта ананімная функцыя які выконвае гэтую аперацыю.
Ён мае гэты параметр дзе гэта тып выводзіцца.
Гэта першы параметр $ 0.
І некаторыя аперацыі адбываецца на тым, што $ 0.
>> АЎДЫТОРЫЯ: Так знак даляра азначае параметр у асноўным,
і 0 азначае першы?
Дадзены Armendariz: Гэта правільна.
Такім чынам, знак даляра ў асноўным азначае, параметр, 0 азначае першы.
Але гэта працуе менавіта ў гэта выпадак, калі я не назваў
аргументы ў маёй ананімнай функцыі.
>> АЎДЫТОРЫЯ: Ці мае Perl ці нешта ёсць гэта знак даляра, даляр 0 там?
Дадзены Armendariz: Ці ёсць, якія, прабачце ,?
АЎДЫТОРЫЯ: Ці ёсць у Perl гэта долар 0, даляр 1--
Дадзены Armendariz: Я не занадта добра знаёмыя з Perl,
але тое, што вызначае PHP зменныя на аснове даляравых знакаў.
І можа быць у некаторых мовах якія маюць такія функцыі, як гэта.
На самай справе, Свіфт запазычвае шмат магчымасцяў, як гэта
ад многіх іншых мовах.
Мы бачым намёкі Python ў ім.
Гэта вызначэнне тыпу здаецца, прыбывае з OCaml.
І ў нас ёсць толькі цэлую кучу матэрыял ад многіх розных мовах.
Гэта адна з добра рэчы, пра Swift
з'яўляецца тое, што яна займае шмат з лепшых ідэі з кучай моў
і shoehorns іх усё разам у адзін супер мову.
На самай справе, калі вы дазволіце мне працягваць дзьмуць ваш розум,
такім чынам, мы рабілі ўсё гэта.
Мы, магчыма, можа спрасціць гэта крыху трохі, разумеючы, што, вядома,
Свіфт мае экспаненту Убудаваная функцыя ст.
Калі я імпартаваць Дарвіна, які гэта проста бібліятэка,
мае гэтай функцыі называецца ваеннапалонных, у цяперашні час Я магу спрасціць сваю ўладу функцыі
каб быць у наступным.
Гэта будзе вяртанне гэта ананімная функцыя.
>> Але паглядзіце на тое, як просты гэта цяпер.
Гэта ананімная функцыя, што прымае некаторы тып дадзеных,
і гэта будзе адзін Аргумент у прыватнасці,
спасылка на $ 0, што мае тып Double.
Гэта будзе вяртаць тып Double.
Але вяртанне заяву Цяпер няяўныя.
>> І менавіта гэта дакладнае стыль, які вельмі, вельмі распаўсюджаныя ў Swift,
паўсюдна.
Мы збіраемся, каб убачыць гэта увесь час у Swift.
Так я паказваю ўсё гэта Вы з-за гэтага сінтаксіс.
Гэта вельмі распаўсюджаная каб убачыць, што азначае яго
з'яўляецца ананімная функцыя якая выконвае
некаторыя аперацыі на гэтых аргументаў.
І ёсць невідавочнае вяртанне.
Такім чынам, гэта абсалютна тое ж самае, для нас, каб сказаць гэта, прама тут.
>> Таму што гэта кучаравыя Кранштэйны з'яўляецца функцыяй,
мы выканаць гэтую аперацыю ад першага аргументу.
Мы збіраемся, каб вярнуцца, што.
Але гэтая знешняя вяртанне вяртанне ўсю гэтую функцыю,
што ўся ананімная функцыя што мы толькі што стварылі.
Любыя іншыя пытанні?
Добра, я не ведаю, калі Вы, хлопцы, гатовыя да гэтага,
але мы можам пайсці яшчэ больш шалёна з Swift.
Вы гатовыя?
ОК, гэта выдатна.
>> Цяпер мы на самай справе маюць магчымасць каб у Swift, таму што, як модульная
і як пратакол на аснове гэта, каб вызначыць нашы ўласныя дзяўбаць аператараў.
Як і ў гэтым выпадку, мы не мелі аператар exponentiation-- добра,
для выканання паўнамоцтваў нешта.
Але я магу, у Свіфта, вызначыць новую Аператар, які робіць менавіта гэта.
Такім чынам, у гэтым выпадку ёсць куча сінтаксісу тут.
І я буду дазволіць Вам зірнуць на яго дома, калі вы глядзіце на гэта.
Але мы вызначаем гэты инфикс Аператар **, які затым дазволіць нам,
вызначаючы, што гэта Функцыя ** на самай справе
робіць, каб прыняць левую руку бок і правы бок,
і затым вярнуць экспаненту, што левы бок да правага боку.
>> І вось зараз раптам I стварылі новы лічнік.
Так 2 ** 3 азначае 2 у трэцяй ступені.
[Страшэнна ГУК] Гэта па само па сабе павінна зрабіць вас як,
ОК, шруба C. Я іду Свіфт ўвесь шлях.
Гэта выдатна.
Гэта даволі фантастычным.
>> Хоць гэта выдатны прыклад.
Але я ні разу не звонку у гэтым прыкладзе фактычна
вызначаецца свой уласны аператар.
Але ўсё-ткі, ён паказвае шмат ўлады Swift
і чаму гэта на самай справе сапраўды вельмі выдатна.
ОК, так?
АЎДЫТОРЫЯ: Калі вы Вызначэнне ўласнага аператара,
як вы ведаеце, выпадкова не паспрабаваць стварыць аператара, што гэта
ў дзе-то ў C, як скрытыя дзесьці ў Swift,
як смутнай адзін, што вы магчыма, не бачылі раней.
>> Дадзены Armendariz: Так што, калі вы спрабуеце каб вызначыць свае ўласныя аператары,
існуе рызыка вызначэння адным-над існуючага аператара.
Гэта ідзе ва ўзровень дэталізацыі, што Я не думаю, што ў нас ёсць час, каб пайсці зноў.
Але гэта рызыка.
І гэта на самай справе прычына таго, чаму Я не выкарыстоўваць сімвал курсора, які
калі мы ўводзім з улады, мы, як правіла выкарыстоўваць 4 крыху карэткі 5 ці нешта
так, проста, калі мы Gchatting прыяцеляў або любы іншы.
Але ў гэтым выпадку, што на самой справе выклікала б сутыкненне.
І таму я пазбягаў яго толькі таму, што Я выпадкова даведаўся, у гэтым выпадку
што якія могуць выклікаць што сутыкненне.
>> Добра.
Цяпер, на жаль, для апошнія сем хвілін,
Я павінен трымаць дзьме вашыя розумы няшмат.
Так што дазвольце мне паказаць вам, некаторыя іншыя рэчы, як добра.
>> Мы паказалі вам гэтую ідэю маючы гэтыя ананімныя функцыі,
гэтыя замкі, якія дазваляюць вам выгляд перадаваць функцыі вакол.
Вы можаце вярнуць іх.
Вы можаце маніпуляваць імі.
Вы можаце зрабіць усё віды вар'яты рэчы.
>> Але адна рэч, якая бывае карысна
з'яўляецца магчымасць, у адрозненне вяртання гэтых функцый
у функцыі, каб перадаць функцыю ў якасці параметру іншай функцыі.
Вы маглі б думаць, ну чаму на Зямлі я хачу зрабіць нешта падобнае?
>> Ну, давайце скажам, што я хачу, прыняць гэты аператар, што я
працаваў так цяжка стварыць і прымяніць гэта кучу розных лікаў
у масіве.
Такім чынам, у гэтым выпадку ў мяне ёсць масіў integers-- 1, 4, 7, 2, 5, 10, 56.
І я хачу, каб падвоіць іх усіх.
Такім чынам, што мы, як правіла, зрабіць гэта, каб проста напісаць
просты цыкл, што перабірае ўсе з іх
і выконваць нейкую квадрат аперацыі над імі,
ўвод гэтыя новыя значэння ў новы зменнай ці, хутчэй, новы масіў тут.
І значэнне на выхадзе Вынікам з'яўляецца тое ўсе гэтых масіваў,
ці, хутчэй, усе тыя Цяпер элементы ў квадраце.
>> І мы маглі б зрабіць тое ж самае рэч для кубатуры яго,
але трохі трывожны званочак павінен ісці ад
сказаўшы, што, магчыма, ёсць нейкім чынам, што мы
быць у стане, каб спрасціць гэта няшмат.
І на самай справе ёсць.
Што рабіць, калі мы маглі б стварыць функцыя, якая дазваляе
прыняць, як драпежнік, функцыі?
Такім чынам, у гэтым выпадку, заняць паглядзіце на гэтыя аргументы.
Мы збіраемся прыняць спіс парным разрадзе.
А потым мы збіраемся прыняць функцыю
ў зменнай пад назвай F, што адбываецца ўзяць падвойную і вярнуць падвойную.
І ўвесь выхад ўсёй гэтай функцыі
называецца пераўтваральнік будзе вярнуць масіў з імем двойчы.
>> Што гэта будзе, то дазвольце мне зрабіць, гэта перабраць гэтым спісе
і зрабіць тое ж самае, але цяпер прымяніць гэтую функцыю на кожным
з асобных значэнняў у гэтым спісе.
Так што я не ведаю, што гэта е.
Гэта не мае значэння для мяне.
Але так доўга, як ён прымае ў двухмесным, выконвае некаторыя аперацыі па ім,
а затым вяртае Двухмесны, я б тады
магчымасць адлюстраваць гэтую функцыю па кожны элемент у спісе.
>> І гэты тып праграмавання званыя вышэйшыя функцыі парадку,
дзе мы перадаем функцыі як параметры
і рабіць рэчы, з функцыямі.
Гэта накшталт як браць усе гэтыя ідэі, якія мы даведаліся ў CS50
і прымаючы іх роду з на наступны ўзровень.
І ўсё гэта CS51 стыль матэрыял.
І таму мы пойдзем у глыбіню больш класаў, як, што.
>> Але гэта таксама Тут важна, таму што мы
ўбачыць шмат функцый якія выкарыстоўваюцца ў Свіфт
што па сутнасці робіць гэта, дзе ў нас ёсць
некаторыя колькасці, некаторы масіў лікаў.
Мы збіраемся прайсці, што Масіў у нашай картографа.
І мы таксама збіраемся прайсці некаторую функцыю, якая
мы ўжо вызначылі тут.
Гэта збіраецца быць квадратнай.
І мы збіраемся, каб затым квадрат ўсе гэтыя лічбы
і захоўваць, што ў гэтым выніку тут.
>> Так што гэта справа мы вызначылі наш Функцыя называецца уласны Mapper.
Але гэта дакладна рэч, на самай справе, убудаваны ў Swift.
Ёсць мноства Функцыі называецца карту.
Там гэта карта функцыя, ёсць знізіць функцыю,
і ёсць функцыя фільтра, якія па сутнасці ўжываць функцыі
да кожнага элементу ў спіс, каб змяніць іх у некаторым родзе.
>> АЎДЫТОРЫЯ: Так, так як вы трансфармацыі дадзеныя ў іншы фармат
праз function--
Дадзены Armendariz: Дакладна.
Так, так што функцыя што мы прымаць
пераўтворыць дадзеныя ў некаторым родзе.
У гэтым выпадку мы былі альбо квадратура яго, ці мы былі кубатуры яго,
ці сапраўды, мы маглі б выканаць няма аперацыі на ім усё.
>> Але дазвольце мне паказаць вам, то, як гэта будзе выглядаць на практыцы.
І зноў жа, я бягу крыху часу. так што я не
будзе ў стане перайсці на ўсе зыходнага кода тут у дэталях.
Але я заклікаю вас, каб зрабіць гэта.
Мы апублікуем яе, як толькі магчыма пасля гэтай размовы.
>> Але калі вы паглядзіце на гэта, Выкажам здагадку, што ў нас ёсць спіс лікаў,
масіў лікаў у гэтым Пераменная званыя лічбы.
Затым мы хочам, каб выканаць гэта праца фільтра на гэтых лікаў.
Так фільтр вышэйшую Функцыя парадку, што
прымае масіў, а таксама функцыі.
І на кожным элеменце ў тым, што Масіў, ён выконвае гэтую функцыю.
>> Калі гэтая функцыя вяртае праўда, ён трымае гэты пункт.
Калі гэтая функцыя вяртае хлусня, гэта адкідвае гэты пункт.
І тады яна вяртае спіс які затым склаў усяго
з тых пунктаў, якія былі адфільтраваныя.
>> Такім чынам, у іншым словы, гэта тая ж ідэя, то заліковую кніжку.
Мы маглі б мець розныя класы у гэтую велічыню называюць лікаў.
Можа быць, 100 і 70, і 40, гэтак далей, і гэтак далей.
Што гэты фільтр робіць апавяшчэнне што гэта, што сінтаксічны цукар
для ананімнай функцыі.
Гэта ананімная функцыя кажуць што параметр, які я прымаць
будзе, калі ён больш, чым 70,
то гэта вяртае ісціну, гэта азначае, што што элементы будуць захоўвацца ў гэтым фільтры.
Так што давайце быць трохі больш канкрэтна пра гэта.
Калі ў мяне ёсць гэты масіў лікаў і складаецца з 100, 70, і 40,
Я выконваю гэты фільтр праца на кожным з іх.
Так што першая гэта значэнне 100.
100 больш або роўна 70 Праўда, што
азначае, што 100 захоўваецца ў гэта новая копія гэтага масіва.
70 таксама праходзіць.
Але 40 ня робіць.
Так што вяртаецца ў passingCount гэта масіў элементаў 100 і 70--
100, коска, 70.
Гэта былі толькі два прадметы, якія захаваліся.
І так па гэтай прычыне я хутка пайшоў праз Многія з гэтых відаў высокага парадку
рэчы, таму што гэта тое, што агульная рэч, якую вы ўбачыце ў Swift даволі
часта, выконвае некаторыя аперацыі выкарыстоўваючы наступны сінтаксіс ананімнай функцыі.
>> Там нейкая цікавы матэрыял.
Камутатары сапраўды магутны ў Swift, Я маю на ўвазе, як вар'ят, вар'ят магутным.
Вы можаце выкарыстоўваць перамыкач, і Вы можаце ўжываць іх на самай справе
дыяпазонах, які з'яўляецца свайго роду вар'ятам, і рабіць модныя рэчы, як, што.
>> Але ў апошнія некалькі хвілін, Я хачу, каб прапусціць наперад досыць далёка
і паказаць вам канкрэтны прыклад таго, як мы можам стварыць у IOS прыкладанне, з дапамогай Swift.
Таму, калі вы робіце гэта, вы будзеце мець, каб узяць
Погляд at-- на Apple, Дакументацыя, яны
ёсць шмат сапраўды добрых урокаў для стварэння першага прыкладання.
І я заклікаю вас зрабіць што, таму што яны вас
праз усе этапы, што менавіта націсніце на стварыць прыкладанне IOS.
>> Але тут мы маем гэта дадатак IOS.
І гэта даволі простае дадатак, на самай справе.
Калі я запускаю гэта, дазвольце мне паказаць Вы, як ён выглядае.
Усё гэта, па сутнасці робіць гэта цягне з інтэрнэту файл JSON
што я захоўваюцца на серверы.
І, што JSON файл вызначае малюнка, якія дазваляюць
мне тады цыкл праз, на маю Дадатак, выявы з майго вэб-сервера.
>> Так што я тут getNextImage.
Ён загружае малюнак з Інтэрнэту, а затым адлюстроўвае яго на экране.
>> Так што гэта даволі проста.
Але мэта тут, каб паказаць Вы, як мы можам аб'яднаць рэчы
З апошніх некалькіх тыдняў CS50 у рэальным дадатку IOS.
Іншымі словамі, мабыць, адзін з рэчы, якія вы хочаце зрабіць
гэта ёсць прыкладанне IOS, што можа пацягнуць дадзеныя з Інтэрнэту
і паказаць карыстачу інфармацыю.
Гэта зусім кропка гэтага зыходнага кода тут.
>> Такім чынам, ёсць шмат, каб сказаць аб як зрабіць фактычнае развіццё IOS.
Існуе шмат вар'ятаў сінтаксісу што мы не бачылі яшчэ досыць
як клас, тое, што клас на самай справе.
Мы можам у асноўным ігнаруюць што ў цяперашні час.
>> Але звярніце ўвагу, што мы ўтрымлівалі у гэтым мноства рэчаў
што мы ўжо бачылі, як Функцыі, якія маюць канкрэтныя імёны.
І калі мы даем тым, Функцыі правільныя імёны
што чакае прашыўкай, на самай справе гэта адчувае сябе крыху чароўным.
Але калі вы ствараеце Дадатак IOS, там
канкрэтныя імёны функцый, якія называюцца самім тэлефоне
як прыкладанне загружаецца, каб паспрабаваць стварэнне працэсу, які фактычна
працуе прыкладанне.
Такім чынам, яшчэ раз, ёсць шмат рэчаў, якія я павінны замоўчваць тут для таго, каб нас
казаць пра гэта канкрэтна.
Але я заклікаю вас паглядзець на, магчыма, іншы семінар IOS, але таксама і некаторыя
з падручнікаў онлайн, якія робяць значна лепш апісваць
канкрэтная інфармацыя.
>> Але мы можам убачыць пару рэчаў, якія цікавыя з кодам тут.
Звярніце ўвагу, што ў нас ёсць, калі заявы.
Дарэчы, адным з важных рэч, калі заявы
з'яўляецца тое, што дужкі вакол Лагічнае выраз з'яўляюцца неабавязковымі.
Але фігурныя дужкі з'яўляюцца абавязковымі, незалежна ад таго, як мала ці шмат радкоў кода
ў вас ёсць у заяве, калі.
Вы не можаце мець, калі заявы без фігурных дужках у Swift.
>> І гэта, ну, накшталт дурное.
Але ёсць гістарычныя прычыны.
Мяркуецца, каб выратаваць вас ад сябе.
Як гэта, напрыклад, вы можаце не ліквідаваць фігурныя дужкі вакол гэтага
калі заяву.
Тыя, якія на самай справе патрабуецца.
Таму я заклікаю вас, каб зірніце на гэта.
Але ёсць яшчэ адзін пабудаваць, што я хачу
каб паказаць вам, пра тое, што Swift з'яўляецца новым для Swift 2.0 параўнанні
ў старых версіях Swift, які складаецца ў наступным.
Давайце паглядзім, дзе я паклаў яго тут?
>> Такім чынам, у гэтай функцыі называецца fetchJSON, гэтая функцыя
нясе адказнасць за пацягнуўшы што JSON файл з URL, які проста так здараецца
каб быць запушчаны на маім CS50 IDE.
Я толькі пачаў Apache, паклаў JSON файл існуе,
і я ў стане, то цягнуць, што Дадзеныя з інтэрнэту, выкарыстоўваючы
гэтая функцыя і гэты адрас, якая прадастаўляецца па тэлефоне.
Гэта забяспечваецца Бібліятэка, што вы карыстаецеся, калі
Вы робіце нейкае разьвіцьцё IOS прыкладанне.
>> Звярніце ўвагу, тут ёсць гэтая незвычайная сінтаксічны канструкт называецца ахоўніка.
І сапраўды, усё гэта ў Свіфт спосаб праверкі
што некаторыя рэчы павінны былі выкананы перад вамі
прыступіць да астатняй часткі функцыі.
Так што я мог бы, выкарыстоўваючы гэты неабавязковы тып,
Я мог бы знайсці URL па працуе гэтая функцыя NSURL
і захоўвання, што ў URL пастаянным, а затым праверкі
каб убачыць, калі URL быў нулявым, таму што гэта збіраецца вярнуцца дадатковы тып.
І калі гэта было нуль, то я б раздрукаваць памылку, а затым вярнуцца.
>> Але замест гэтага, то, што ахоўнік дазваляе нам зрабіць тое, што вельмі рэч,
але пераканайцеся, што гэта на самай справе так, што гіперспасылка
быў належным чынам усталяваны NSURL.
І калі гэта так, то прапускае гэта, і гэта
дазволіць вам працягнуць гіперспасылка быўшы належным чынам вызначаны.
Але калі гэта так, што гіперспасылка, ня правільна вызначаны,
калі гэтая функцыя вяртае памылку ці некаторыя іншыя нечаканыя рэчы
на самай справе адбываецца, гэта ахоўнік канструкцыю дазваляе затым выхад гэтай памылкі
і неадкладна вярнуцца.
Да?
>> АЎДЫТОРЫЯ: Так што гэта свайго роду з Like An, калі потым яшчэ?
Дадзены Armendariz: Гэта свайго роду Like An, калі потым яшчэ, ды,
акрамя таго, што гэта гіперспасылка затым вызначаецца для ўсяго ніжэй гэтага.
Калі яна праходзіць гэты ахоўнік, то яго на самай справе будзе запоўнены дадзенымі
і выкарыстоўваць у пакінутае Зыходны код у функцыі.
Так я падазраю, што вы збіраецеся пачаць бачыць гэтую стойку, а таксама.
І памятаць пра тое, што.
>> Так што, гледзячы на ​​пару з адным рэчы, гэта прама тут ёсць што,
Як вы лічыце, толькі на падставе якіх мы гаварылі пра раней?
>> АЎДЫТОРЫЯ: Думаю, што гэта будзе працаваць у спісе?
>> Дадзены Armendariz: Так што гэта блізка.
Гэта функцыя, якую мы вызначаем.
І мы гэтую функцыю ўводу ў якасці аргументу гэтай функцыі тут.
>> АЎДЫТОРЫЯ: [неразборліва], калі не нуль.
Так што гэта ў спісе, ці не так?
>> Дадзены Armendariz: Калі памылка не нуль, так што is-- так што я павінен пракруткі.
Ну, давайце паглядзім, я не магу сапраўды пракруткі направа тут.
Памылка аргумент, што ў цяперашні час перададзены ў ананімнай функцыі.
Гэта ананімная функцыя.
Гэта не мае імя.
Але мы прымаем гэтыя тры Аргументы, дадзеныя, адказ, і памылак.
І гэта збіраецца вярнуцца несапраўднымі, так ён не збіраецца нічога вяртаць.
І гэта змест гэтай функцыі.
І тады ў нас ёсць доступ ўнутр, што Функцыя кожнага з гэтых параметраў.
>> Так што гэта віхура экскурсія па мове.
Але я спадзяюся, з гэтым, мы спадзяемся, як вы прымаеце
погляд на некаторыя з падручнікаў спецыфічных для распрацоўкі IOS з Свіфт,
асабліва калі вы ідзяце ў Распрацоўшчык вэб-page-- ад Apple
у іх ёсць шмат сапраўды добрых падручнікі, каб вы пачалі.
Але мы спадзяемся, проста гэты гадзіну казаць аб сінтаксісе сам даў
Вы дастаткова, каб пачаць з гэтым.
>> Мы размесцім ўсё гэта крыніца Код на сайт семінара
як мага хутчэй, а таксама слайды так у вас ёсць спасылкі для ўсіх іх.
Але поспех з вашымі праектамі.
І дзякуй усім вялікае, што прыйшлі.
>> [Апладысменты]