>> DANIEL Armendariz: Здравейте, всички, добре дошли в IOS ап развитие
с бърза.
Аз съм Дан Armendariz.
Аз съм precepter на компютъра науката тук в училището
Техника и приложни науки.
И бързо е всъщност вид на наистина чист език.
И аз имам някои планове за днес.
Така през следващия час, или така отиваме да погледнем IOS ап самата развитие
използване на Xcode и всъщност създава известна много основни, много прости приложения.
И погледнете в начина, по който всъщност се съобразят с тези приложения,
и да ги построят, а всъщност сложете ги на IOS устройство.
Някои от нещата, които ние няма да погледне
ще включва неща като всъщност като заявление
и да я постави на хранилището на ап.
Има много уроци онлайн, че ще ви помогне с този аспект от него.
Но също тъй като част от CS50, можете да получите
да се присъединят към развитието Apple отбор, отбор ап развитие CS50 е.
Ако все още не сте го направили, че и ви са свързани с CS50,
Аз препоръчвам да направя това, защото това
е как вие сте в състояние да създадете някои програми в Xcode,
ги построят, а всъщност сложи тях на някои от вашите IOS устройства
ако действително има физическо устройство IOS.
Ако не разполагате с физическа IOS устройство, което е повече от добре.
Всъщност можете да се развие за IOS.
И Xcode има симулатор, който ви позволява
да видим вашата кандидатура в действие на компютъра си.
Но това нещо е нещо, спретната действително да играят и да си взаимодействат
с вашата кандидатура в условията на реален устройство.
Така че има няколко изисквания към всъщност правите всичко това развитие.
Една от тях е, че вие трябва да имате Mac.
Трябва да се работи 10.9.4 или по-късно за да направите развитие с бърза.
>> Можете да използвате по-ранна версия за разработване на
с Objective C за IOS и Mac.
Но аз препоръчвам, и много от най- примери, които ще видим днес,
използвате 10.10 Йосемити.
Така че, ако все още не са модернизирани, това е един добър повод да го направят.
Сега Xcode 6.1 е най-новата версия на на интегрирана среда за разработка
че Apple осигурява безплатно че можете да изтеглите изключване ап магазина.
И аз Ви препоръчваме да също тече най-новата версия.
>> Ако се случи да се работи по-ранна версия, Xcode 5 и долу просто
просто не подкрепят бързото каквато.
И бета версии на шест, които бяха освободени през лятото,
Подкрепям бързо, но има бил огромен брой
за промените в езика, достатъчно така че кодът, който сте
Ще разгледаме и че сте може да се намери в интернет
всъщност няма да се компилира правилно в тези предишни версии на Xcode.
Така че отново, ако все още не имат предвид разработчик,
Препоръчвам ви да отидете developer.apple.com.
Регистрирайте се, да създадете акаунт разработчик, и да се присъедини развитието екип CS50 ап.
Това ще даде на вас възможност за съставяне на вашите приложения
и ги поставя в устройството.
ОК, така че нека да започнем.
Първото нещо, ние ще направим, е
действително да се създаде една много прост проект в Xcode
който ще ви позволи да да подаде молба.
>> Така че, ако все още нямате Xcode отворено, отидете напред и да го отворите
и създаване на нов проект.
Специална показвай ще се отвори и ще ви даде
някои опции за това, което това е, което искате да направите.
Просто казвам, че искате да създадете нов проект, нова молба.
Това ще се покаже прозорец, ако приемем, че използвате Xcode 6.1.
Точно сега, и за продължителност на този семинар,
ние ще използваме единични приложения за разглеждане, само
нещо просто приложение за да получите краката мокри.
И вие можете да се клон на собствения си от там.
>> Кликнете Next в този момент.
Сега тук има няколко неща, че може да искате да въведете.
Името на продукта е Име на вашия проект.
В този случай, аз съм просто Ще го наречем Seminar1
защото това е първият ни пример.
Име на организацията, в този случай е само моето име.
Можете, разбира се, че промените да си собствено име, или да CS50.
Идентификатор организация, ако се случи да има един сайт просто приемете
име на домейн обратно, com.yourname.
и след това името на продукта трябва да се появи автоматично
след това като идентификатор на сноп.
>> Очевидно е, че езикът, на който сме ще бъдат използване за днес е бързо.
Можете, разбира се, да използвате Цел C за това, но днес ще бъдат бързи.
И ние ще за сега казват универсални устройства, така че
че тя работи на IPAD, така и за iPhone.
И ние ще остави ядрото данни непроверени да запазите
проекта относително просто за момента.
Така че нека да вървим напред и кликнете Next.
И то се случва да ме питаш мястото, където искам да го спаси.
Просто ще го запишете на компютъра си, за сега.
>> Добре, така че сега това е, което ще да се случи, когато всъщност отворена Xcode.
И забележи, че Първото нещо, което виждате
е този удивителен знак, че заяви, че няма подписване идентичност намерен.
Аз умишлено е направил това на компютъра ми и аз съм
надявайки се, че аз ще да е в състояние действително да го оправя,
защото искам да видя как това всъщност ще работи по своя собствена машина.
>> Давай напред и да кликнете Fix въпрос.
Тя ще ви помоля, ако имате съществуваща Apple разработчик сметка.
Това е мястото, където да се присъедини към CS50 отбор ап развитие
е важно, така че да не само имате акаунт ап,
но също така имате способност да подпише приложения
и ги сложете в IOS устройство.
Това е not-- щракване Fix въпрос не е необходимо
ако сте просто ще изгради и развива на местно ниво,
изцяло в симулатора IOS.
>> Но за сега аз ще съм да се развиват и да ги сложи
на моя IPAD, която ще бъде в състояние да излъчват, както добре.
Така че аз не искам да всъщност добавите това.
И това ще ви помоля ми за моя Apple ID.
Така че това ще бъде това.
И аз трябва да черпя парола, която е тук.
Така че ми даде само една секунда, за да откриете, че, и копие, което и го поставете тук.
>> Кликнете върху Добавяне.
Това ще ме питаш кой отбор искам да се присъедини.
Отивам да направя училище на инженеринг.
Кликнете на присъединяване.
Опа, това е погрешно.
Нека да направим това.
Надяваме се, че един ще работи.
Това един все още не работи.
Ние сме на привършване на добри тук.
OK, този човек трябва да работи.
Сега затворете това.
Сега нека направим училището на инженеринг, кликнете изберете.
>> И сега се надяваме след Няколко секунди можете can-- OK,
Ще отмени и искане.
О, човече, това ще е не работят.
OK, аз ще се опитам друг.
Нека да направим този тук.
Живи демонстрации са ми успяват.
Може да се наложи да се върне към точно изграждане изцяло на местно ниво,
но това би било ОК в този случай.
>> Така че тук, докато всъщност това е работно, това, което ние ще направим, е просто
създаде една много проста Hello World заявление.
Така че това е Xcode.
И ако не сте го видели още, тя може да е малко смущаваща на първо време.
Има много неща, на стъкла, има много doodads в различни области.
Но просто осъзнаваш, че има Наистина няколко основни компонента
за това развитие среда.
На най-вляво са всички файлове които са приложими за вашата програма
или да си конкретен проект.
Ще бъдат щракнете върху около на някои от тях и ние ще
посоча най- важни от които с времето.
На крайната десница, ние имаме набор от атрибути.
И всички тези качества, има са различни стъкла за атрибутите.
Стъклата ще се променят в зависимост от контекста на основното съдържание, което
се случва да бъде в центъра.
Сега средата всъщност може да се покаже можете различни неща, например
Вашата самия код.
Или пък може би действително have-- когато кликнете върху монтажната маса, която
е, между другото, просто графично представяне на вашия потребител
интерфейс за вашия application-- След това на панела с атрибути
на крайните десни всъщност ще се промени.
Сега вече има няколко други неща, които искам да посоча.
Можете да подреди на опознаването около в околната среда по своему.
Но едно от нещата, че е бил много полезен
това копче тук, на горната част на прозореца.
Има бутони, че Прилича на далечната
остави го има точка последвана от два кръга и подреди
на две стрелки, сочещи далеч един от друг.
Ако превключите между стандартен редактор, който
е най-вляво един, този, която е избрана по подразбиране,
и двата кръга припокриващи помежду си, какво всъщност става дума
са двойно Показване на панела.
>> И това е всъщност Ще бъде полезно за нас
когато трябва да се свържат елементи в потребителския интерфейс на кода.
И ние ще говорим повече за това че в един момент.
Но осъзнавам, че ако получите още повече стъкла по този начин,
можете да опрости вашия изглед просто малко, като кликнете върху гърба
на вашия единствена редактор.
Дотук добре.
Така че основно трябва кодът за отляво, атрибути на правото,
и каквото и да е, ние работим тук в самия център.
>> Така че тук съм кликнал на главен сториборда.
И монтажната маса, отново, е начин в Xcode
че всъщност можете да създадете свой потребител интерфейс, използвайки просто влачите и пускате
техники.
И така за нашето много Първата молба тази
е точно това, което ние ще направим.
Отиваме да слязат на много далеч долната дясна част
на екрана, която съдържа различни потребителски елементи
които след това можете да щракнете и плъзнете да създадете потребителски интерфейс.
>> Сега всички те елементи се наричат ​​гледки
защото те предоставят някаква гледка.
Има изглед на изображение, за Например, за да покаже действително
изображение на потребителския интерфейс.
Има един табличен изглед към действително покаже таблица.
Така нататък, и така нататък.
Има голямо разнообразие от възгледи, които можете да направите тук.
Така че просто за сега отиваме за да търсят етикет.
Можете просто да преминете през всички от списъците, че е там.
Но има и търсенето Бар на самото дъно
че е по-лесно да се идентифицира специфични възгледи, които всъщност
Искам да плъзнете във вашия потребителски интерфейс.
>> Намерени моя лейбъл.
Отивам да го плъзнете тук, директно върху прилагането моята проба.
Точно там в средата изглежда добре.
И аз отивам да напишете "Hello World!"
Хит Enter.
Сега имам етикет.
Тя не изглежда като това е центриран доста правилно.
Така че мога да се опитате да си център него.
За щастие тя предлага тези Ръководства за да направи нещата много по-лесно.
Аз ще се опитам да го компилирате.
Надяваме се, че ще работи в действителност тук.
И ако това не е така, в един момент тя в действителност ще се появи на моя IPAD.
Това е точно тук.
Ето го.
>> ОК, така че това е всичко.
Ние сме направили.
Ние създадохме нашата много Първата молба.
Сега очевидно това не прави нищо.
Това е просто един етикет.
Няма никаква връзка между потребителския интерфейс и кода.
Така че, ако ние наистина искахме да се създаде тази връзка,
ако ние всъщност исках да имам някаква на комуникация между елементите
които съществуват на екран и кода, че
ни позволява да контролираме тези елементи, а след това
ние всъщност трябва да погледнете в самия код.
>> Така че това е, което се нарича ViewController.swift.
И, особено за първите няколко програми,
това ще бъде нещо като голямата част от кода, който сте enter--
ще бъде в този документ тук.
Има много неща, че е тук до момента, нали?
Има внос UI комплект клас, замени, [? фънк,?] всички тези различни неща.
И това не е съвсем ясно какво това е, че всичко това означава.
Така че нека да се върнем малко назад далеч от Xcode за малко
и гледам на самия език, бързо.
>> Така че с бърза, тя беше в дизайн и разработка
в Apple за около четири години на моето разбиране.
И има няколко функции за това, че са наистина хубаво.
На първо място, това е съставила език, точно като C.
Така че първо трябва да се я компилирате и след това да го изпълните
Преди да можете да всъщност изпълнение на код, който води.
Но има разлика C, интерактивен подкани, че всъщност можете да изпълните
и въведете произволни команди в.
И много като конзола JavaScript, които могат да се запознаят с предприятието,
тя действително ще оцени тези, команди и да ви предоставя продукцията.
И те дори взехме че на следващото ниво
и са създали нещо наречени площадки в Xcode
че ви позволява да визуално работи с код.
И ние всъщност ще видите някои примери на които в съвсем малко.
Той е базиран на C. C лежи в основата на го, защото всички от съставителите
създаване на код от C и създадете кода само от него.
Но това наистина акции сравнително малко синтаксис.
Тя ще изглежда доста по-различно.
Ще има някои прилики.
Но там ще бъде доста разлики
в сравнение с, да речем, JavaScript или PHP.
И ние ще посоча тези в един момент.
>> Сега един от най-големите неща за бързо, че е хубаво
е, че особено в сравнение до C, това е трябвало да бъде в безопасност.
Всичко това означава да бъде много силно въвели инча
В действителност това е почти досадно в началото, когато за първи път
започнете да работите с бърза, колко много го прилагат видове навсякъде.
Всичко, което е низ трябва да остане низ.
Много е трудно да се справи на новопокръстен той или тя принуждаване в някаква друга форма.
>> И отново, ние ще покажем примери за това.
Но в крайна сметка се разбере, че Тя е замислена да ви защити,
и чрез вас искам да кажа кода си, от трясък в някои ужасен начин, когато
Имате ли някаква несъответстващи тип.
И отново, работи с него.
Защото това ще бъде разочароващо в първия като се опитате да разбера защо точно
получавате това необичайно грешка, занимаващи се с типове.
Но тя ще се струва, че в края на краищата.
>> Тя се занимава с автоматична управление на паметта,
така вече не правиш трябва да се справят с нещата
като изчистване и безплатен и всички на тези видове неща.
И това също е проектиран за общи приказки.
Така че, докато ние можем да използваме един Xcode да създадете IOS приложения и Mac приложения,
ние също може просто да го използвате като скриптов език.
И така, можем да го използваме сортиране вместо на PHP или вместо
на Python за действително бързо разбор и процес
някои данни, които имаме в нашия компютър.
>> Той разполага с голямо разнообразие от съвременната характеристики, Евентуалната, изменчивост,
генеричните лекарства, затваряне, и много от това неща, които може или не може да разпознае.
И това е просто нещо жалко част от езика, че някои от тях
сортиране на футуристични и модерни елементи, които се съдържат в елементите са
толкова дълбоко вкоренени, че аз действително ще Трябва да ви научи CS50.5 малко.
>> Ние трябва да се научим малко повече относно някои функции, за
наистина да се разбере какво се случва нататък и така, че можете да погледнете код
и не се чувстват напълно загубени.
И вие ще видите какво имам предвид от които само една минута.
ОК, така let's-- достатъчно от този нещо като теоретична неща.
Нека наистина погледнете нашата Първата бърза програма.
Това е един ред код.
Line 14 точно тук, тя казва печат л н здравей CS50.
>> Така че има няколко неща, които е много по-различна за сравнение
до неща, които биха могли да бъдат използвани за от С, например.
Една от тях е, че няма intmain, няма да включва раздел,
има нищо от това допълнителни неща.
Включи, като стандарт I / O, като библиотеките
че всъщност предоставя на стандартни характеристики на езика,
автоматично се включва като част от стандартната библиотека на SWIFT
и които са внесени автоматично.
Не е нужно да се направи че внос ръчно.
>> Intmain не съществува, защото основната входна точка за кода
е всъщност най- началото на кода.
Така че всеки код, който имате от началото
всъщност ще бъде изпълнена в началото.
Така че това наистина значително опростява.
Забележете също, че няма запетая.
Няма по точка и запетая в този език.
Слагаш изявление на индивидуална линия
и след това на следващия ред представлява друга декларация.
Ако искате да поставите mulitiple изявления онлайн,
тогава ще трябва да го разделят с точка и запетая.
Но по-голямата част, за добър стил, ние сме
Никога няма да видите и запетаи за целите на разделителните отчети
в бърза.
И така, как това действително работят?
Ами много като C ние всъщност трябва да се съберат тази.
И така, ние можем да направим това с помощта на бързи С и след това 1.swift.
И тогава, след няколко та това ще съставя
и след това мога да тичам точка първа.
И от това просто ще кажа "Hello CS50."
Awesome, така че отиваме.
Има първата ни Здравей, свят програма.
Нека да преминем към номер две.
>> Сега в this-- това се е променило леко, тъй като има предвид, нормално ли
do-- всъщност винаги ли трябва да съставят и прилагат бързо, преди да
всъщност тече it-- една на големи предимства
които споменах преди, беше, че бързо може действително да се използва при сортиране
на псевдо-интерпретативен режим, има е в действителност като преводач.
Но това, което ще направим, е да има е, в действителност, една бърза заявка
че можете да изпълните.
>> Така например, ако просто напишете бързи тук, какво ще се случи
е, че вие ​​ще получите бърз.
И вие можете да въведете вашата бърза код, отпечатате здравей, и да го ползвате.
И това всъщност ще print-- Е, това не се отпечата в този случай
защото той отпечатва да центрира вън, което не се вижда тук.
Но това всъщност е в състояние да функционира.
И така, в този случай, аз съм просто ще използва това като скрипт.
И всъщност мога да изпълня този код там.
Така че начинът, по който аз всъщност работи това ще бъде малко по-различно,
но вие ще видите, че в един момент.
Сега, в този случай това, което ще да направите, е първо да дефинирате променлива.
Така че това е начина, по който се определят променлива в бързи,
е ние използваме нека ключова дума, последвана от името на променливата,
и след това ние предлагаме някои инициализиране на данни по избор.
Така че този случай ние не дефинирането константа, наречена на името,
и ние ще използваме, че в на изхода на нашия печат линия
Най-долу, здравей името.
>> Сега забелязвам, че вместо да използвате% S, можем да капсулира името на тази
променлива в / () и да е в състояние да свързвам в съдържанието на настоящото
низ в този низ.
Сега за разлика от C, низ е действителната недвижими тип в бърза.
И така, тя седи редом целочислени и успоредно
удвоява много лесно и естествено сравнение
до някои от другите езици, които сме виждали.
Така че това всъщност ще функционира точно както може да се очаква.
>> Мога да тичам 2.swift.
И ние виждаме, че името ми е всъщност челно в "Hello Дан."
OK, страхотно.
Преминавайки към номер три.
Сега тя е малко по- на бяла лъжа, че съм
каза, че начинът, по който ние заявяваме променливи е да използвате нека ключова дума.
Както много пъти, колкото евентуално може да ви направя искате да използвате нека, защото това, което прави, че
е той определя постоянна.
И който казва бързо, че тя може да оптимизиране на скоростта на вашата заявка
защото знае, че това променлива няма да се промени.
>> Така оцени внимателно когато започваш да се използва
променлива за цели на нейната промяна.
И когато ти започваш да се създадете променлива, също
да проведе някои данни и че е Не всъщност няма да се промени.
Така че тази концепция за неизменност, това не е реално да се промени,
е важна, дори като падаща по определяне на променливи.
Така че тук сме определено име, нека име, и в този случай
Това е постоянна, която е от типа низ, и тя е равна на Дан.
>> Така че в предварителното версия, тя infers-- и от "я"
Искам да кажа swift-- бързо заключава от типа на данните
че сме влезли в променливата.
В този случай, ние може да бъде изрично.
Така че нека след това името на този променлива е име, а след това на дебелото черво.
И след дебелото черво, което правим определя вида на данните.
Така че вече не го е инт име или Име на низ или нещо подобно.
Но вместо това нека етикет, ние сме определяне дали или не
това е постоянна или променлива, последвана от името,
последвано от тип по избор.
>> Така че в този случай ние не дефинирането това име е низ.
Казваме е Дан.
И сега имам друга променлива, в този случай тя се нарича етикет.
Но забележете, че това е представка с Var ключова дума.
Средствата Вар ключови думи че тази променлива може да
да се промени на по-късен етап от време, някъде в кода
всъщност можем да го и го променете няма да ни даде конкретна грешка.
>> Ние можем да направим стандарт слепване Операторът тук с помощта на знака плюс
действително да добавите нашия име в този низ.
И тогава можем да разпечатате както видяхме само преди миг.
Сега нека да кажем, че сте искате да създадете променлива
но не искате да го инициализира, все още.
Вие все още не искам да поставя никакви данни в него.
Е, трябва да кажа, бързо онова, което вида на данните
ще бъде преди да можете да всъщност го определи правилно.
>> Така че в този случай, когато сме дефинирани променлива, наречена клас а ние трябва да бъдем
изрично за своя тип, защото тя не може да се направи извод, просто гледам
в Initialized данни , която предоставяте на него.
Това ще ни даде грешка, ако Просто тип Var клас, например,
защото тя не представлява вид затова.
Така клас = 100.
Така че 100 е цяло число, тя се вписва много добре в това.
Тя ще продължи да функционира.
Можем да видим как тогава ние може да свързвам тази инча
Сега може да сте изкуши, ако действително
Исках да се слеят в клас в друг текстов низ,
в друг низ, които бихте направили просто използвате същата тази конкатенация оператор.
И това обикновено е вярно.
Но бързо, няма да ви позволи да имплицитно се промени типа на данните.
Така че в този случай, това линия, 25, ще се провали
тъй клас е число, а не низ.
И така има разминаване набор от видове.
Така че трябва да бъде изрично, когато искате да промените тези данни,
когато искате да принудят този данни в друг вид
и да кажа, OK, Искам да се възползвам този клас, който е цяло число,
и да го превърнете в низ.
>> Така че вземете капитала String всички от видове, които ще забележите, се капитализират,
Int, Double, String, така нататък и така нататък.
Всички те се капитализират само за да направим нещата по-лесно.
И ние ще кажем капитализира String премине в него клас.
И това ще се създаде низ от това число.
И тогава можем да се слеят двамата много добре.
Всякакви въпроси относно тези неща досега?
Добре, нека да оре чрез до номер четири.
>> Сега нека да поговорим за някои по-напреднали структури, като масиви и цикли.
И за разлика от C, масиви в бързото не са представени чрез указатели.
Показалки в бързи, въпреки че те съществуват, наречен
като опасни указатели или някои подобен тип като този,
те не са изложени на обикновено.
Така че това става много трудно за да манипулират
паметта директно от вашия компютър.
>> Така масиви са само тип данни.
И те са съотнесени с помощта на този вид на предприятието стандартната квадратна скоба нотация
че вие ​​не сте виждали преди.
Но когато наистина искате да определи типът на дадена променлива
като масив от някои конкретен вид, тогава
постави този вид в квадратни скоби.
Така че това, което искам да кажа е, че Аз съм създаване на променлива, наречена
класове от тип INT масив.
И аз съм за определяне, че е равна на част инициализира данните, който в този случай
е 100, 0, 90, 85, което е просто колекция от произволни класове тук.
Сега в този случай бих могъл, не забравяйте, премахнете вида,
и той ще бъде в състояние да го направи извод въз основа на данните инициализира.
Но ако аз се отстраняват тази и Имах нужда да го настроите по-късно,
тогава аз ще трябва да се уверите, че имам вида там.
Добре, нека да преминем заедно.
Така че ние can-- масиви предоставяте, разнообразие
на методи, чрез които нотацията най-вероятно сте вече запознати.
Така grades.count, например, ни казва точно броя
на елементи, които са съдържаща се в този масив.
>> Ако искам да добавя additional-- Сега забелязвам, че това е Var
и not-- това е променлива и не е константа, която
означава, че мога да променя съдържанието на този масив, мога да добавя обекти към него.
Но не може просто да се каже степени и след това в квадратни скоби
четири, защото това ще бъде извън границите на грешка в този случай.
Ако искам да всъщност промяна размерът на този масив,
Аз трябва да се използва методът на дот се прикрепя към добави нещо към самия край на това.
Не мога обаче промяна отделните индекси.
>> Така че мога да използвам степени и след това квадратни скоби
нула, за да манипулира този първи форум и така нататък, като обикновено можете да очаквате.
И аз мога да направя същото и с действително получаване на данни от това, както добре.
Сега има и нещо като фантазия метод за постигане на това, степени плюс равни
и след това друг индекс, които ще append--
или не друга index-- но друг списък, който
ще прилага този списък на гърба на класове.
И оценките ще След това съдържа всичко това.
Но това е нещо допълнително нещо че аз съм просто ви показва за забавление.
>> Сега там е за линия.
И това е началото на къде нещата започват да се променят малко.
Забележете как това за линия е за различен от бримки в С
Сега ще отбележа, че за линии в Swift може
да се направи, за да изглежда като за линии в C, но там е много по-полезни конструкции
че по същество елиминира нуждата да имат за Var I е равна на 0 и запетая и
е по-малко от някои дължина, така нататък и така нататък, нали?
И тази конструкция е само един от тях.
>> За индекс, индекс е ново променлива, в този случай, в обхват.
И това, което искам да кажа е, че има диапазон от 0 целия път до
но не включително grades.count.
Така че тази точка точка, за по-малко отколкото знак представлява
диапазон от стойности се започва от нула по целия път до grades.count минус 1.
Има отделна Операторът, който съществува,
която е точка точка точка, която би означава, че искам диапазона от нула
да степени брои включително.
>> Но в този случай, защото те масиви са индекс нула, ние, разбира се,
не искам да отида до Максималният брой класове.
Мога да обобщя степените, когато имате възможност очаквате, и на изхода на всички тези неща.
OK, продължи нататък.
Сега нека да поговорим за функции.
За да се определи функция използвате фънк ключова дума.
И отново, в Swift, което трябва да бъдете много внимателни с видовете.
Вие предоставяте на него параметри чрез определяне, например,
името на параметъра и След това в Колин, вида на данните
които очаквате, че параметър, за да приеме.
>> Така че в този случай имаме функция, наречена брой печат клас.
Той приема неограничен нарича gradebook, или по-скоро параметър наречен gradebook.
И ние очакваме, че gradebook да бъде масив от цели числа.
Ако това gradebook е празна, Ще отпечатаме едно нещо.
В противен случай ние ще отпечата броя на степени, че това действително има.
>> Сега, ако искаме да се върне някои стойност, тогава пътя
че можем да измени тази дефиниция е действително да използвате тази стрелка дума,
или да използвате тази стрелка означаващо.
Така че тук ние ще определи функция, наречена средна.
Отиваме да приеме списък с номера.
И ние ще се върне двойно, което ще се надяваме
е средната стойност на този масив.
И за да се направи това, за да действително да се изчисли тази средна,
ние ще се сума и ние ще на Разбира се сумира всички обекти
в рамките на този масив.
>> Забележете, че има нова стил на линия за тук.
Ние не трябва да бъдем категорични за итерации през всеки един елемент,
но вместо това може да се каже за клас и gradebook, смисъл
че за всеки отделен позиция, която имаме в този,
предостави тази позиция в тази променлива, наречена клас.
И аз искам да направя нещо с него.
Така че аз ще обобщим всички тези данни и всъщност върне двойно деление.
>> Нека видим отново тук там е концепция за целочислено деление в Swift.
Ако искате да се удвои дивизия Защото искате знака след десетичната запетая,
тогава ще трябва да бъде изрично, не само за едната страна,
защото това няма да ви позволи за принуждаване на данни от двете страни на този,
ще трябва да всъщност разбира двете страни в двойна стая
така че ти си много изрично да гарантира на
че сте прави двойно разделение.
>> Нека да продължим.
Така че, ако наистина искате да accept-- така че в този конкретен пример,
това все още е команда Онлайн базирано приложение.
И ние започваме да виждаме някои от ограниченията на младия език
в които въпреки че можем достъп до аргументите, с помощта на
този process.arguments, това е Все още не е непременно най-чистите
нещо, което някога сме виждали.
Но в общи линии ви насърчавам някак да погледнете този код
и се опитват да разбера какво точно се случва.
>> По същество това, което се случва, е, че ние сме като списък от аргументи
и са ги принуждават в числа, а след това ние сме
Ще използваме това като начин за печат от средната стойност на всички наши класове.
Преминавайки.
Сега има и друг вид data-- още данни тип, а не масиви
наречени речници, които са много подобно на хеш таблици или хеш карти
и също така са подобни на Асоциативни масиви в PHP.
Така че те имат представата на ключове и стойности.
>> И те са определени също така и с този площад скоба нотация,
но разликата е че речници имат
вътрешността на квадратен скоба, двоеточие.
И дебелото черво разделя данните написали, че е от ключово значение и стойност.
Така че в този случай, аз отивам да се създаде речник да приеме някои класове.
И това ще бъде от тип низ: INT,
което означава, че всички ключове ще бъдат струни,
и всички от стойностите на тези, ключове ще бъдат цели числа.
>> Какво означава това е, че мога след позоваване на конкретни данни
че искам да използват тези ключове скоро отколкото с помощта числови индекси като I
ще има за стандартна решетка.
Сега нека да видим, че има едно важно нещо
че аз също искам да спомена за тази конкретна последователност на кода.
И това е, че има друг тип данни,
или по-скоро има тази идея на данни, който е
съдържаща се в рамките Swift нарича Евентуалната.
>> И какво означава Евентуалната е че тя признава факта,
че понякога не започваш да получите данните, които очакваш.
И така, какво имам предвид с това is-- нека да разгледаме тази последователност на код
която повтаря върху всички аргументи, които са преминали към този код
и се опитва да ги конвертирате, опит да се раздели на различни струни,
защото приема много определен тип аргумент.
И тогава той ще се опита да принудят конците, които представляват номера
в цели числа, които са класове, че тогава мога да се изчисли.
>> Така че основно аз ще използвате този сплит функция, която
съществува и при Swift стандартна библиотека.
Отивам да премине в него низ, че искам да се разделим.
И след това при използването на този сортиране на фънки синтаксис, който
Аз не знам дали ще стигнем до, но може би, ние
действително ще определят точните характер, че ние искаме да се раздели на.
И така, какво означава това всъщност изглежда?
Нека да разгледаме най- Всъщност използването на този код.
>> Така например, нека да кажем, че имам викторина и аз имам 50 на това.
И имам PSETs и Имам сто върху това.
И аз got-- има друг викторина и аз имам 40 на това.
Ударих Enter, и в крайна сметка това, което ще се случи е, че това, което прави
се приема на тези параметри, цепене конците на тези колони,
признава, че има два елемента във всяка една,
и това е по същество следене на всеки.
>> Така че аз имам в моя речник викторина, чиито стойност е представена от броя 50,
Имам PSET, че има стойност от 100, и викторина един, който е на стойност 40.
След това по-късно в код I всъщност средно всички тези стойности
и списък на всички ключове на този конкретен речник.
Но това е важно така че можете да забележите
това, което се случва, е, че това, което ние искам да направя е да се възползвам от тази поредица
и го разделя на този герой, което можем да направим, пак с това разделение
функция с помощта на този вид Интересно синтаксис, който съществува тук.
>> Просто за сега приемем, че това е ОК.
Ще разгледаме по-този само за известно време.
Но сега там е интересна аспект, който всъщност
Искам да опитам да промениш това низ в цяло число.
Но в други езици какво може да се случи е
че най-вероятно ще се опита да го направят и да било да се върна
някаква Sentinel стойност като отрицателен
или може би една нищожна или нещо подобно.
Или може би той просто ще предизвика грешка.
И ние ще трябва да След това хванете тази грешка
и след това се опитайте да направите нещо основава на факта,
че това превръщане до цяло число не успя.
Това е, когато тази идея на Евентуалната идва инча
Всъщност можете да създадете тип данни, който е въпросителен знак INT, например.
Това означава, че това число е, в действителност, по желание.
И какво ще се случи, е, че тя може съдържа цяло число, или да не може.
Тя може, в действителност, е тази друга идея, изцяло нарича nill.
В което това означава, че има няма стойност отговорност в тази.
Тя дори не е нула, Просто няма стойност.
Няма абсолютно никаква стойност, представена.
>> И това е, което тази линия 71 се справя.
Е, че той казва, че съм Искам да опитам да зададете стойност,
променлива, наречена степен, равна на конверсия на този низ в едно цяло число.
Така че съм направил този низ, това първите компоненти,
или по-скоро Второто компоненти, тъй като тази
е нула индексира, на този низ, че съм разделен.
И аз искам да конвертирате че да цяло число.
Но това не винаги може да се пристъпи нормално, защото си представете
какво ще се случи, ако, вместо тип редица, пиша разбира като ASDF.
>> Това ще се провали.
Това не е всъщност ще бъде в състояние да конвертирате, че да е цяло число
както бих очаквал.
Така че, вместо да започне някаква грешка,
имаме тази идея на незадължителен.
А това означава, че с помощта на този въпросителен знак мога да кажа,
OK, възможно ли е, че мога да взема това, превърнато в междинно съединение,
и го сложи в променлива, която също ще бъде Int.
Ако е така, то това означава че това е било успешно
и тази първа част от блокът може да продължи.
>> В противен случай, той не успя.
Няма никакъв смисъл в grade-- или по-скоро има никаква стойност в съществуващите,
и аз всъщност трябва да се опитаме да справим с това състояние на грешка.
Вие ще видите това въпросителен знак през цялото време
в Swift и в пример код за Swift.
И всъщност на nill оператор, този вид на въпросителен знак, на Евентуалната част,
ще е може би един от най-трудните неща
някак да увийте главата си около Защото в момента се работи с него.
>> Тя може да има смисъл сега.
И в действителност, когато бях писането примерен код за този,
със сигурност разбрах какво се случва,
но все пак ме хванат от изненада всеки толкова често
когато аз ще откриете, че някои данни е всъщност
нулева версия, по желание версия на данните, че аз очаквах.
Така че просто се разбере, че ако имат незадължителен версия
вие трябва да разопаковам, че данните от това поле.
>> Така че това е нещо като I-- представете си, ако има една кутия и тя съдържа нещо.
И това, което трябва да направите, е да си зададем въпроса,
възможно ли е, че тази кутия всъщност съдържа данните, които аз търся?
Ако е така, тогава дръпнете, че от данните и го сложи в тази променлива съществуващата.
Ако не, тогава просто трябва да абстрахираме от съдържанието на тази клетка
общо защото буквално не съдържа нищо.
>> Всички въпроси по този въпрос?
OK, нека да се движат далеч от това сортиране на командния ред на базата нещо
и започнете да търсите най- някои от технологиите
че Xcode предвижда да ни под формата на детски площадки.
Така че има много Възможност тук с Swift.
И ако се отвори Xcode и го ви пита какво искате да направите,
можете да отворите на детската площадка и просто да си поиграете
с много различни структури и аспекти на езика
още преди да започнете да докосвате ЗИ SDK или Mac SDK.
>> Така че този случай, нека да кажа, че аз have-- Имам сравнително скалъпен например
тук, но носи със себе си, тъй като ние сортиране на работа през този пример.
Да кажем, че ние трябва да направим много на експонати с фиксирана стойност,
като знаем, че ние ще трябва да направи много квадратни правомощия, например.
Така че ние ще вземем някои стойност х, ние ще го квадрат,
ние ще отнеме известно стойност Y и ние ще го квадрат.
Така нататък, и така нататък.
>> Сега ние всъщност може просто да създадете мощност от 2 функция за това, нали?
Така че трябва да създадем мощност от 2 функция.
Ние ще приемем двойно.
Ще output-- или ще върне двойно тип.
Ще вземем този резултат и след това два пъти
какво всъщност взимат предвид резултатите, които беше на инициализира на стойност от един,
и го умножете по х.
Така че по същество ние имаме х пъти х тук.
>> И така, след това мога да тогава, както бихме могли очаквате, да вземе това, тичам мощност от 2,
предвиждат да го някои данни, които харесвам 2.0.
И ние се да видите резултатите тук 4.0.
Стартирай мощност от 2 на 3.2 и ние можеш да видиш нашия резултат, 10.24.
Дотук добре, нали?
Сега мислим, добре, OK.
Сега аз всъщност трябва да направи много правомощия на 3.
Така че аз ще копирате поставите всичко на този кодекс, смяна на името на функцията от
мощност от 2 до мощност от 3, и всичко ще бъде същата, с изключение на тази стойност
Тук, на този диапазон, 1 ... 2.
>> Така че, вместо да повтаряме този цикъл два пъти,
Искам да повторя този цикъл три пъти.
Така че аз просто се промени тази стойност от 1 да 3-- или по-скоро 2-3.
Така че отново, същия код, това е единствената промяна.
Сега това също работи.
Мощност на 3 предвидено в някои стойност 2.
Получаваме 8.
Така че 2 кубчета.
И 3.2 куб е 32.768.
И дотук добре, нали?
Но се надяваме, че това е малко по- малко червен флаг за вас
в които имаме сега известно дублиране на код
с изключение на някои много малки промени от една към друга.
Така че има ли някакъв начин, че може би ще успеем да се опрости
този проблем, на който можем да всъщност, по време на изпълнение, да разбера някои,
предоставяте, определена функция, която има Именно силата на това, което искаме.
>> А има и тази идея за затваряне, което е много, много
важно в контекста на Swift, и в много други езици.
Но най-вероятно ще видите го използва повече, че в Swift
защото това е внедрен в рамките на езика
от щете в друга също модерни езици.
Така че идеята за закриване е това, че е
може да има функция, която има за цел да да е общо и функция, генерично мощност
на функция.
>> И тази функция ще се приеме този експонат, че ние всъщност
искате да създадете.
Така например, самото начало Например, ние искахме с мощност от 2.
Така че ние ще осигури енергия на и след това в скоби 2.
И сега забележи какво това всъщност се връща.
Това отнема вход на грунд нарича Y, че е цяло число,
и го връща този луд търсите нещо в parentheses-- скоби
двойно и след това стрелка двойно.
>> Какво означава това е, че аз съм ще се върне функция.
Аз не съм се върне друг тип данни, аз съм
всъщност връщане функция че има този параметър, че
приема двойна като вход и извежда двоен като връщане на стойност.
И като резултат, защото сега съм нарича мощност, която минава през някои стойност за Y,
и аз съм създаване на тази друга function-- известие, че има
друга функция, която е създадена по вътрешността на this-- какво правя
След това мога да променя тази стойност, че една
стойност, която бях променил 2-3, аз сега да го направи у.
>> И това продължава.
Така че всеки път, че аз наричам мощност на, по същество това, което се случва
е, че мога да се върна функция.
Забележете, че тук съм определено нова променлива, наречена квадрат.
Аз съм го настроите равна на мощността на, при условие, тази стойност 2 на власт на.
И какво е това връща функцията.
Така квадрат, променливата квадрат, сега е от тип функция
че има this-- Опа, превъртете до един Малко bit--, че има този подпис,
приемам двойна и изход двойно.
>> Така че сега, което съм направил е аз съм същество
създаде функция, наречена квадрат, че приема никаква стойност и ще го квадрат.
Ние можем да видим какво се случва тук.
Square 3 например, означава, че ще да вземе стойността 3 и квадрат.
И така, как точно става това?
Когато минавам мощност на 2-- когато премине 2 в тази власт на функция,
тази променлива Y е населена с тази стойност 2.
И това е нещо, проведена в паметта.
Това е нещо като държани в членка някъде в компютъра,
ние не ми пука как или ако в този момент.
>> Но да се върна на тази функция наречено exponentiate.
И отново, това няма значение това, което тази функция се нарича,
наистина можем да го наречем нещо, че приема двойна и се връща двойно,
но използва тази стойност Y вътре в него.
Така че, въпреки че това е тази функция, тази exponentiater функция, която е
били върнати обратно в моята променлива, че се обадих на квадрат,
тя съдържа в нея това понятие от това, което беше у.
И помни, че.
>> Така че всеки път, когато се обадя, че функцията, която сега се нарича квадратна, тя използва това.
Но това означава също, че мога създадете друга променлива, използвайки
различна мощност.
Така че мога да се създаде променлива куб, за Например, да предостави, за да го мощност от 3.
Сега куб всъщност ще отнеме известно стойност и кубче, че и да го върне.
Така че ние можем да видим, че мога да получа на стойност 8 от това.
>> Но тази стойност Y не е променило, защото те са
състояла се в нещо като независими променливи.
Те са нещо като държани в независими пространства в паметта.
Така куб винаги ще има х на степен 3.
И квадратен винаги ще има х на степен 2, които
означава, че квадратен винаги ще квадратни номера, както се очаква.
И куб винаги ще кубчета номера, както очаквам.
Това също така означава, че понякога може да получите някаква фънки търси синтаксис
където ще трябва мощност на в самото долната част на екрана тук, мощността на 5.
И ти да премине в резултата.
Обаждате се, че функцията, която е били върнати с номера 4.
И какво от това същество това е 4 до петата власт,
можем да видим резултатите там.
С мен досега?
>> Така че тази идея се нарича затваряне, защото това, което основно правим
е ние капсулиране някои данни into-- сортиране
на заграждащи тая информация параметър на функция и ние сме
е в състояние да използват повторно тази функция.
Сега този синтаксис че действително може да да се опрости, голямо количество.
И има много възможности в Swift за това опростяване.
И това е, какъв вид на последващи такива действително гледат.
Така че в 7б например, ние вземе това точно същия код.
>> Но сега, а не всъщност дефинира функция
вътрешността на това право на функционират и да му дадете име,
и след това се върнете името на тази функция, която
след това се използва като част от това закриване, вместо да сме
Просто ще го опростят.
Ние нямаме нужда от тази функция, за да бъде кръстен.
Така че това е концепцията за анонимна функция, където можем да после
приема като вход, в скоби тук, променливата X, която е от тип двойно.
>> Отиваме да се върне на тип двойно.
И тогава на ключовата дума, N, е началото на тази функция.
Така се отбележи, че цялата е в рамките на фигурни скоби
и ние сме определяща анонимен функционира тук.
Просто по-прост начин на определянето на точно същото нещо.
OK?
Но държа, Swift всъщност ни дава възможност да отиде по-далеч и да се опрости още повече,
защото наистина не го правим пука, че този параметър е
име всяко конкретно нещо.
Това наистина може да се нарече нещо и Все още можем да използваме, че първият параметър.
>> Така че в действителност съществува този специален тип данни в анонимни функции,
има това специално име на променливи в анонимни функции
че започнете с знака за долар и представляват
номерата на параметрите, нула индексира, за тази функция.
Така че има няколко неща, става.
Тук аз ще се върне, а след това и фигурна скоба, представляващ функция,
нали?
>> Забележете, че не са дефинирани в параметрите видове или вида върне.
Това всъщност може да се заключи, защото на подписа
на тази оригинална функция.
Така че можем да елиминираме че като възможност.
Но също така мога да използвам знака за долар нула до представлява този първи параметър, който е
преминали в тази анонимна функция.
Така че това опростява още повече.
OK?
Дотук добре?
>> Сега е това type-- правиш запомни тази долар нула
които видяхме в тази фигурна скоба които видяхме още малко
Преди в тази Swift шест например?
Това беше точно тук.
Забележете, че е точно това, това, което търсим в,
е, че сме преминали в този сплит функция
анонимна функция, която проверява Първият параметър
да видим дали това е равно на символа на дебелото черво.
И това е точно това, което е случва, е, че всички
ние сме doing-- връщането ключова дума се подразбира
в тази case-- ние връщане тази стойност, когато сравняваме
първи параметър срещу този герой на дебелото черво.
И така, това нещо demystifies това.
И ти започваш да се види тази конструкция много в Swift синтаксис, така поддържаме, че
се има предвид, когато сте като погледнете това.
Сега можем да сляза релсите малко
и отидете наистина фантазия, която показва дори някои повече от мощността на SWIFT.
Може дори да видите някои от тях в примерни кодове.
Значи затова аз отивам да покажа това за вас.
>> Основно това, което можем да направим е, че, от една страна от всички, това е вид на ненужна за мен
прилагането на всички, че мощността на код, защото ако импортирате Дарвин
библиотека, тя всъщност включва функция наречено Pow, че прави това за вас.
Така че ние можем да го опрости още повече и Разполагаме със мощност функция сега просто
бъде прекрасно един лайнер, където ние просто върнете на тази анонимна функция, която
приема знака за долар, поставете 0 като база и Y като своя експонат.
>> Но ние можем да получите наистина, наистина фантазия, когато ние
осъзнават, че Swift има много власт под капака.
Много от операторите, които ние сме били, занимаващи се с,
плюс признаци и деление символи и всички тези неща, които обикновено
работи с с типове данни на език за програмиране,
всъщност са разтяга в Swift.
И какво от това, че означава, че ние да дефинирате собствени оператори.
>> Така че сега аз съм уморен от пишете във всичко това Pow и след това на скоби и след това
основата.
Аз не искам да правя това.
Аз всъщност искат да имат оператор, който ми позволява да направя това.
Така че мога да кажа, Swift, че искам да се създаде един оператор, звезда
star-- от начина, по който не мога да използвам в карати защото в карати е оператор, който
прави нещо съвсем различно.
Така че аз не искам да сортирате на сблъскат с това.
И така, това, което виждате в различни на езика, включително и Python,
е като звезда звезда оператор да представят експонати.
>> Така че това е единствената причина Затова съм направил това.
И това ще бъде оператор на тип пъхам.
И аз трябва да се осигури да го някаква информация
за предимството на тази оператор, така че е ляв асоциативно.
Това е като относително висок приоритет в сравнение
да сумиране или размножаване.
Това е по-висок приоритет от всички тези.
Така нататък, и така нататък.
И тогава аз се дефинират функция, която всъщност
диктува какво този оператор прави.
Така че ако се приеме, че имам ляв част и отдясно,
което би било може би добро име на променлива за това.
Лявата страна и от дясната ръка.
Тогава мога да се възползвам от тази мощност на лявата страна на дясната страна
и да се върнете на тази стойност.
Така че сега това е супер сладка.
Всичко, което трябва да направите, е 2 звезди звезди 3 и че е от 2 до третата мощност,
и получаваме стойност 8.
2 звезда звезда 10 е 2 до 10-та власт, ще получите 1024.
>> Така че сега нашата сила на функция, който отново е различна,
защото цялата идея зад това е, че имаме една функция, която
винаги отнема известно стойност и умножава it-- или по-скоро
отнема експонентата на една и съща мощност.
Така че сега е още по-лесно.
Така че сега това е просто долар подпише 0 звезда звезда у.
Ние дори не трябва да се използва Pow вече.
>> OK, който е загубил?
Правим ли OK?
Всякакви въпроси за това?
Така ли?
>> Публика: Когато you-- [недоловим] фънк силата на Y двойно.
Така че, когато сте завръщането функция.
DANIEL Armendariz: Funk мощност у двойно.
О, да, аз не знам какво у цифрите са.
Съжалявам за това.
>> Публика: Защо се връщат отново функция [недоловим] заграждение.
Не е ли долар нула звезди звезден Y [недоловим]
Смятат, че оператор с които възстановява в двоен [недоловим] удвои?
>> DANIEL Armendariz: Така че нека ми отговори на въпроса ви
как аз го разбирам и можете да ми кажете ако аз не разбирам въпроса ви.
Така че тази конструкция, на фигурна скоба знака за долар нула звезди у звезда,
е функция.
И тя приема параметър, който е представляван от този знак за долар нула.
Ключовата дума за връщане се подразбира в този много кратък, анонимна функция синтаксис.
>> Което означава, че по същество какво е това казва
е, че аз съм определяща function-- и тогава ще
Просто го наричат ​​something-- когато имам някаква ценност у.
Имам Y, която е двойна.
И аз съм се върне двойно.
И аз имам в рамките на тази възвръщаемост y-- съжалявам, Не трябваше да нарича тази y-- х.
О, боже, ох, ох.
X-- nope-- Y звезда звезда.
>> Така че това е само една опростена версия на тази.
И така, поради причината, че имам долар знак нула е, че с помощта на тази кутия
означава, че вече нямам да въведете Pow, или вече не правя
Аз трябва да направя нещо като 3 звезден звезда 2.
Не мога просто да има един-единствен функция, наречена квадрат
че винаги ще се някаква ценност като вход
и всъщност се върне на площада на това.
>> Така че цялата цел на затварянето е да просто някак капсулира факта,
че аз винаги искам да ш го използва, когато Аз наричам тази функция като мощността
когато приемате това експонат.
Така че връщането тогава, а функция, която приема
двойно, която е в основата, и връщане на резултата от това експонента
е ключът тук.
И това е и основното различие.
Имаше малко от замах.
>> Това не е по-различно в сравнение с предишните примери,
но това е само малко а ние процъфтяват може действително
създадете оператор в Swift и всъщност правят неща с него,
което е един вид на нещо готино.
Казах ли ви отговори?
Sweet.
Всичко друго преди да продължим?
OK.
>> Сега този вид повдига въпрос е that-- и OK,
Сега ние имаме способността за функции да бъдат върнати.
Можем също така да премине функции като информация или като параметри на други функции?
И всъщност можем.
Така че нека да кажем, че имаме всички от един и същи код.
Имаме квадратен променливата които ще изправят този код.
И ние имаме променливата куб че ще кубчета някои данни.
И ние действително искаме да се прилагат за широк кръг от числа.
>> Така че това, което ние може да се изкуши да се направи, разбира се, което е определено валиден,
е да обхождане на този списък от числа и прилага моите функции квадрат и куб
и получи две нови списъци като резултати че сме на този оригинален списък на квадрат
и кубчета, съответно.
Напълно приемливо.
Но какво е това, което ние виждаме тук, е, че ние имаме,
отново, дублиране на нашия код.
И там е може би една възможност за нас, за да се опрости тази малко.
Какво става, ако имаше начин за нас да всъщност винаги обхождане на някои списък
и просто да премине към това вълшебно функционира променлива, която
представлява функция че искаме да се прилагат
на всеки един елемент от този списък.
Това води до идеята за това, което се наричат ​​по-високи функции ред.
И това е по същество това, което тази е, е, че ние можем да създадем функция.
>> И в този случай тя се нарича Mapper, само за да му се даде име, просто
картографиране над всеки единичен елемент от списък.
Когато аз се списък и аз се функция.
И тази функция, разбира се, има определена подпис.
Той приема като параметър двойно и тя ще изведе е двойна.
И целият резултат от тази функция ще
да бъде нов списък, който е от тип двойно.
OK?
>> И това, което аз ще направя е да се прилага тази функция е
на всеки елемент в списъка ми.
И reply-- и скоро се върне тази нова списък в резултат на това, което е наистина страхотно.
Сега мога да премине функции наоколо.
И тази идея за по-висш порядък функции е наистина важно.
И това Mapper е наистина само изпълнение на сиромаха
на функция, която е построена в Swift нарича карта.
И го прави точно това, може би дори малко по-добре.
>> Това е просто нещо като родово, опростена версия, че
ни позволява да видим на концепция, която се прилага тук.
Сега погледнете начинът, по който аз всъщност може да се прилага ми квадрат
и моите куб функции Към този списък от номера.
Аз тичам ми Mapper.
Аз му предостави моя списък от номера.
Аз му предостави Тези и други функция, която ще
да прилага по отношение на всеки един от тези показатели.
И това ще бъде изход в резултат.
И аз ще получите, за да видите, че съм на квадрат и кубчета моите номера като резултат.
>> И разбира се на четящото устройство ще се някаква анонимна функция.
Ние дори може да се види, че съм създал нов анонимен функция, която
Просто отнема известно параметър и го дели от 2.
И ние можем да видим, че съм в действителност, разделена моя списък от 2 вместо.
Cool?
Дотук добре?
Добре, сега нека се върне към тази идея.
Нека да приложи това обратно в контекста на gradebook.
>> И ако аз направя това, ние можем да видим, че мога прилага голямо разнообразие от тези options--
или голямо разнообразие от тях висшите функции поръчка
действително да се опрости способността ми да направя различни неща, включени в списъците на номера.
Така например, ако I вземат списък с номера,
една от функциите високи поредни че съществува, се нарича намаляване.
Какво намали прави по-скоро от картата, се намалява ще
отнеме два елемента в списъка, Ще отнеме известно функция, която
сравнява двата елемента на списъка, и ще след това
сортиране на output-- на изход от тази функция
ще бъде още един елемент, който След това се сравни с другите.
>> Така че можете да използвате това, за да всъщност сборът от числата във вашия списък.
Например, ако сте имали списък на 1, 2, 3, 4, 5,
вземете първите елементи, 1 и 2.
Можете да кандидатствате за нея добавка функция, която използва тези два елемента
и изплюва един от тези елементи, която ще бъде на стойност 3.
След това ние приемаме тази стойност 3 със следващия елемент от списъка, обобщи тези две,
и след това продължавай надолу в списъка.
>> Ние намаляваме избройте до една стойност.
И то просто така се случва че на знака плюс
е оператор, точно както ние просто видях.
Този оператор е всъщност функция, която
има точно този списък, че ние би искал, а тези имоти
че ние ще искаме.
Така че аз ви насърчавам да да разгледаме това.
Искам да сортирате на ход на някои от този код
така че всъщност можем да разгледаме някои действително, реално, вярно Swift в Xcode,
в развитието на IOS.
Но да погледнем това и да видим, ако можете
разбора какво става с някои от тях по-висок порядък
функции, включително филтъра, намали, а вие дори ще
виж някъде тук карта, както добре.
Това е точно тук.
Къде ще отнеме последователност от класове и той действително ще
ги на картата с помощта на превключвател конструкт, които може да се разпознае от C,
но всъщност е много по- мощен от превключвател конструкт
която имаме в C.
>> И ние ще се прилага, че да всеки елемент в списъка
и реално осигуряват ранга на всяка буква
от тези класове, които използват всички тези понятия че съвсем наскоро говорихме преди.
Сега нека да заобиколят само за минути и се говори за structs.
И така structs са за изчакване в C, че ние са били в състояние да определи нов тип данни.
Съществуват Structs рамките Swift.
И така правя много други конструкции наречени enums и класове, които наистина
възползвам от тази идея към съвсем различно ниво.
>> И в общи линии това е просто начин определяне на нов тип данни.
Така че, ако get-- ако дойдеш целия клас или structs или enums,
не се бърка с него.
Това е просто начинът на определяне свежи определен тип данни.
И това е много важно, когато ние не говорим за IOS ап развитие
защото всичко, което съществува в рамките на IOS ап
по същество е обект на някакъв вид.
И един обект е в основата на клас или ENUM или структура.
>> Така че в този случай аз съм определяне на нов тип данни
че аз съм оценка обадите това е някои свойства, включително
име и поредица от класове.
Така че един вид оценка за да имам в предвид,
Би било викторини, например.
Аз бих искал да има оценка, която беше викторина
и че е имал различни класове свързан с това, за викторина една,
викторина две, така нататък и така нататък.
>> Или че може да има различен тип на оценка за проблемни комплекти.
И аз мога да направя неща.
Аз всъщност може да има функции в рамките на този тип
на данни, които вече са наречени методи.
Така че, ако някога видя на метод дума, тя наистина
е просто функция, която се прилага много специфичен клас,
или до много специфичен вид данни.
Това ни позволява да променяте данните в него.
>> Така че, с други думи, ако искам да добавите степен да ми оценка,
След това всичко, което трябва да направите, е да добави резултата, който се беше вход
до тази функция, за да моята вътрешна имот.
Има и друг чист конструкт тук в Swift, която е тази точка точка точка
оператор, което означава, че резултатите могат да Сега приемам произволен брой числа.
И резултати ще бъдат масив от цели числа, които
са преминали към моята функция, която означава, че мога да правя такива неща.
>> Мога да се добавят класове и просто да предостави произволни номера на цели числа в нея
и действително да бъде предоставена на масив на тези ценности в моя функция
или в моя метод, както е в случая.
Сега това е важно, защото всичко в Xcode, всичко в IOS,
е всъщност един обект.
Така че имайте това предвид когато ние бюст отворена Xcode
и прескачане напред отвъд IOS версии две и три
и всъщност продължи до версия четири.
>> И отново, всичко това ще бъде публикуван на страницата на семинара.
IOS четири е нещо като пълна разпенени изпълнение на един много основен ап.
И това, което прави това приложение е зарежда UI, който изглежда по този начин.
Отново, ако кликнете върху сценария можем се види, че това е това, което изглежда.
Това е ПС.
Тя има заглавие на самия връх.
Аз съм го нарича уеб галерия.
>> В средата има един елемент наречено изгледа на UI изображение.
И в дъното има лента с инструменти с един бутон, че
има разтеглив пространства, които позволяват това да център в средата на тази лента с инструменти.
И това, което се случва, е, че когато тази товар тя се сваля файл JSON, че е
съдържаща се на сървъра на друго място, прави разбор, че JSON файл,
и файла JSON изглежда малко като този.
Файлът с JSON изглежда така.
Ето го.
>> Той има име на албума и тя има множество снимки.
Всяка една от тези снимки има име, а също и
а самите URL, които представляват JPEG версия на тази индивидуална снимка.
Така че това, което се случи, е, че когато тази програма товар, тя се сваля файла JSON,
го прави разбор, поставя всичко това в еквивалента на масив в IOS
ап развитие, което е nsarray.
И тогава аз след това може да се зареди тези данни в заявлението
и да го зареди на екрана си.
>> Налице е изображение, което се зарежда с бутона на самото дъно.
Ако щракнете върху Get Следваща, тя след това дърпа, че картинка от интернет
и заменя тази картинка в изгледа на UI изображение.
Така че можете да изтеглите това и всъщност да разгледаме това на вашия компютър.
И го изградим и всъщност я компилирате върху вашето устройство.
Но по същество процесът е това, създаде storyboard--
или по-скоро не create-- но изберете сториборда.
И действително we'll-- ако не mind-- ние ще отнеме само няколко секунди
действително да ви покажа как това е направено.
>> Точно така, че начина, по който действително може да постигне това се прави малко по-
очевидна.
Единична заявление оглед, аз съм Ще се обадя на този семинар
четири представляващ тази специално брой.
Запазете го на десктопа.
OK, ще кликнете върху сценария.
И това, което аз ще направя е да се намери мен образ,
го плъзнете в моя потребителя интерфейс и център него.
Сега просто го центриране съжаление няма да правите и един куп,
с изключение на екран че е точно този размер.
>> Така че можем да се убедим, че от кликнете на тази двойна нещо кръг,
снижаването на тази поп меню тук и промяна нагоре
да визуализирате, където ще действителност получи шанс да визуализирате как
Това ще действителност гледам на други устройства.
Както можем да видим, ние дори не го видите на този конкретен случай.
Така че аз отивам да затворите този за сега.
>> И аз отивам да изберете Тази икона надолу в самото
долната част на екрана.
Той казва Resolve Авто експонация въпроси.
За съжаление, това е отрязан в долната част.
Но ако кликнете върху това, което съм получите е тази поп up-- си отиде.
Това, което получавате, е този поп, че ми позволява да добавите липсващите ограничения.
И с тези си го Ще тогава нещо се заключва
в централната част на екран като I може да се очаква.
>> Сега, за да получите този бутон за Освен това, аз трябва да отида до редактора.
Отиди Постави В и кликнете Navigation Controller.
Какво, че ще направи, е, че ще добави Целият този друг компонент към него,
но всъщност ще свърже го върна към първоначалното ми UI.
И детайлите, отново, ние не Наистина трябва да се грижим за момента.
Но аз не искам да имам лентата с инструменти на самото дъно.
Така че аз ще проверя предавания Toolbar.
>> И това се предвижда в рамките на мен, който сега е някъде другаде,
можем да видим, че е свързан повече тук.
Тя вече осигурява лента с инструменти в долната част на моя UI.
Така че сега, вместо да избирате Вижте изображението, мога да намеря етикет,
или по-скоро toolbar-- нека да видим, къде е това?
Какво се нарича?
A т button-- bar-- item-- Бутон sorry-- бар т.
Цоп, че има и прилага няколко на гъвкави пространства от двете страни
действително да центрирате това.
Така че сега аз създадох моята UI, основно.
И аз мога да му се даде име от двойно щракване на самия връх
тук и казва, уеб галерия и така нататък.
Сега отново, това са елементи че съществува само по себе си.
И аз трябва да се свърже ги да ми код, който
Мога да направя от отново привеждане тази двойна икона кръг,
преминаване от визуализацията.
Което, между другото, сега можем да видим, е добре центриран и ще изглежда добре
на различни устройства.
>> Превключи на автоматичен, което ще отглеждане на кода ViewController.
И сега тази част е важна.
За да можете да свържете тези два елемента, код за функцията на ПС,
можете да изберете елемента, който искате да се свържете.
Така че в този случай, ние всъщност искат да се кодират
смените изображението, които се съдържат в рамките на това мнение UI изображение.
Така че, ако вие управлявате кликнете от изгледа на изображението и плъзнете,
вие ще забележите, че имате по-малко бар, когато пусна всичко това поп
ще се появят до.
>> И той казва, че ще го направим създадете връзка.
И от тук искам да го дам име, нещо като галерия.
Хит Enter.
И това всъщност осигурява променлива, наречена галерия на
че тогава мога да референция в моя код да смените изображението, например.
Е, как действа този код всъщност изглежда?
Ами пак, аз не искам да прекарват твърде много време за него.
И аз ви насърчавам да да го свалите и да погледнете.
Но един от най- Важен аспект е кодът
че действително извлича изображение.
>> Така че в този случай аз искам за да получите в рамките на моите снимки
спектър, който се съдържа в рамките на моя клас.
Искам да определи името и адреса която е била анализирана от тази JSON.
Всъщност поиска от устройството, за да получите URL, за да донесе на URL от това,
и след това донесе на данните от Съдържанието на този адрес.
Тогава конвертирате, че данните в изображение чрез преминаване в образа на UI.
И отново, те са различни видове на обекти, различни видове упражнения.
>> И тогава аз може след това задайте ми gallery.image равна на тази информация.
И това е нещо като месото на това, че всъщност е тогава
можете да промените на климата данните from-- на снимката от една към друга.
Така че отново, надявам се сега много конструкциите
Ще направим малко повече разум.
Забележете, че има някои удивителни знаци тук.
Точките за удивителни са същество, свързани с ЕКСТРИ.
>> Какво съм аз реално казват че без дори проверка
да видим дали има данни в рамките на тази опция,
Отивам да вървим напред и да се предположи, че има и го разопакова.
Не забравяйте, че ние използвахме аналогията нещо като пакет за ЕКСТРИ
и ние трябва да се разопакова пакет и дръпнете данните навън.
Удивителният знак сили, които всъщност се случи.
>> Но аз знам, че това е безопасно, защото аз проверих
да видим дали данните на изображението е равна до нула, аз всъщност се провери
да видим дали това е задължително е в действителност, не успя.
Ако има, в действителност, не е вече.
И така, аз съм сигурен, че след като съм се да това точка аз спокойно мога да разопакова, че данните.
Можете също така да го видите в формата на въпросителен знак.
Така че, ако ние превъртете надолу до мястото, където I Трябва да всъщност направи разбор на данните.
>> Така че не се обезсърчават от тези вид на дълги имена.
Можете да намерите в Apple разработчик сайт много
препратки към всички обекти и всички процеси
които всъщност правят това възможно.
Но забележете, че това е по същество функция, в която аз го давате някои данни.
И като се върна някаква информация.
И аз трябва да използва това като ключова дума за го превърне в това nsdictionary?
Което е отново, за избор nsdictionary.
Което след това трябва да се проверете дали тя съществува.
>> Така че мога да използвам, че ако споделите успешните равни анализирани,
След това аз знам, че това е задължително действително съдържа някои данни.
Или това, което направих тук беше да Просто се предположи, че ако има
е имало грешки, че тя в действителност е безопасна.
Добре, искам да благодаря всички ви много, че дойдохте.
Знам, че това е много, но това е само един час
да поговорим за някои доста напреднали неща.
И така, да се надяваме, че ще се получи шанс да свалите целият код
и да вземат по-добър, по- задълбочен поглед към него.
Нещо се убедите всички от нещата, което се случва.
И искам да ви благодаря всичко отново, че дойдохте.
И пожелание за отлични окончателните проекти.
Имате голям ден.