>> ДАНИЕЛ Армендариз: Здраво свима, велцоме то иОС апп развој
са брзих.
Ја сам Дан Армендариз.
Ја сам прецептер од рачунара Наука овде у школи
за инжењеринг и примењених наука.
И брзо је заправо врста од врло уредну језику.
И ја имам неке планове за данас.
Тако у наредних сат времена или тако ћемо да погледате иОС апп самом развоју
користећи Ксцоде и заправо стварање неке Веома основне, веома једноставне апликације.
И гледајући на начин на који вас заправо узети те апликације,
и граде их, и заправо ставите их на иОС уређају.
Неке од ствари које нећемо гледати
ће укључивати ствари као заправо узимајући апликацију
и стављајући га на Апп Сторе.
Има доста туторијала на мрежи која ће вам помоћи са тим аспектом њега.
Већ и зато што део ЦС50, добијате
да се придруже Аппле развој Тим, развој апликација тим ЦС50 је.
Ако нисте урадили још и сте повезани са ЦС50,
Ја не препоручујем да вас учинити зато што
како сте у стању да створи неки програми у Ксцоде,
граде их, и заправо пут их на неки од ваших иОС уређаје
ако стварно имате физичка иОС уређај.
Ако немате физички иОС Уређај који је више него добро.
Ви заправо може развити за иОС.
И Ксцоде има симулатор који вам омогућује
да видим своју пријаву Акција на рачунару.
Али некако је уредан ствар да стварно играју и интеракцију
уз пријаву на стварне уређаја.
Дакле има пар услова за уствари раде све ове развоја.
Једна од њих је да морате да имате Мац.
Мора се ради 10.9.4 или новији да би то развој са брзих.
>> Можете користити раније Верзија за развијање
са Објецтиве Ц за иОС и Мац.
Али ја препоручујем, и много примери да ћемо видети данас,
користе 10.10 Иосемите.
Дакле, ако још нисте упградед, то је добар изговор да то уради.
Сада Ксцоде 6.1 је најновија верзија интегрисано развојно окружење
да је Аппле пружа бесплатно да можете преузети са Апп Сторе.
И ја препоручујем да вас Такође имају најновију верзију.
>> Ако се деси да буде покренут раније Верзија, Ксцоде 5 и испод само
једноставно не уопште не подржавају брз.
И бета верзије шест, који пуштени током лета,
подржавам брз, али има био огроман број
промена у језику, довољно тако да код који сте
ћемо да погледамо и да вас Можда пронађете на интернету
неће заправо саставити правилно у овим претходним верзијама Ксцоде.
Дакле опет, ако не још имају налог програмера,
Препоручујем одете у девелопер.аппле.цом.
Пријавите се, направите налог програмера, и придружити ЦС50 развојни тим апп.
То ће обезбедити да вам прилика саставити своје апликације
и ставио их на свом уређају.
У реду, па хајде да почнемо.
Прва ствар ћемо да урадимо је
да правите веома једноставна пројекат у Ксцоде
да ће вам то омогућити направи апликацију.
>> Дакле, ако још увек немате Ксцоде отворена, само напред и отвори га
и створити нови пројекат.
Посебан уводни екран Отвориће и да ће вам дати
неке опције о томе шта то је да желите да урадите.
Само реци да ли желите да креирате Нови пројекат, нова апликација.
Овај прозор ће искочити, под претпоставком да користите Ксцоде 6.1.
Управо сада, и за трајање овог семинара,
ћемо бити користећи сингле виев апликације, само
нека врста основне апликације да би се ваше ноге мокре.
А можете се грана сами одатле.
>> Кликните на Нект у овом тренутку.
Сада овде има пар ствари да би желите да унесете.
Име производ Име вашег пројекта.
У овом случају, ја сам само ће то назвати Семинар1
јер је то наш први пример.
Назив организације, у овај случај је само моје име.
Ви наравно да га промените да своје име, или да ЦС50.
Идентификатор организација, вама ако десити да имате сајт само узети
назив домена у реверсе, цом.иоурнаме.
а затим назив производа треба аутоматски појавити
након тога као идентификатор снопу.
>> Очигледно језик који смо ће користити за данас је брз.
Можете, наравно, користи Објецтиве Ц за то, али данас ће бити брза.
А ми ћемо за сада рећи универзални уређаји, тако
да ради и на иПхоне и иПад.
И ми ћемо оставити језгро Подаци чекирану да задржи
Пројекат релативно једноставна за сада.
Дакле идемо напред и кликните на Нект.
И то ће ме питати где желим да га спаси.
Само ћу га сачували на десктопу за сада.
>> У реду, тако да сада то је оно што ће десити када заиста отворен Ксцоде.
И приметите да Прва ствар коју видиш
је ово знак узвика који каже да нема потписивања идентитет фоунд.
Ја намерно урадио ово на мом компјутеру и ја сам
надајући се да ћу бити у стању да заиста то поправити,
јер желим да видим како ово ће заправо радити на сопственом машини.
>> Само напред и кликните фик проблем.
То ће вас питати да ли имате Постојећи Аппле Девелопер налог.
Ово је место где придруживање ЦС50 развој апликација тим
је важно, тако да не само имате један налог,
али имате и Способност да потпише апликације
и ставио их на иОС уређају.
Ово је нисам-- клик фикс питање није неопходно
ако ћеш само да изградња и развој локално,
потпуно у иОС симулатору.
>> Али за сада идем развити и ставити их
на мом иПад, који ће бити у стању да емитује као добро.
Тако да желим да заиста додати ово.
И то ће питати ја за мој Аппле ИД.
Тако да ће бити ово.
И морам да узмем лозинка, која је овде.
Зато ми дај само један секунд да сматрају да, и копирати да, и налепите га овамо.
>> Кликните Адд.
То ће ме питати који тим Желим да се придружи.
Ја ћу да урадим школу инжењеринга.
Кликните Јоин.
Упс, то је погрешно.
Хајде да урадимо ово.
Надајмо се да је један ће радити.
То је један и даље не ради.
Ми понестаје добрих овде.
Ок, ово би требало радити.
Сада затворите то.
Хајде сада да урадимо школу инжењеринг, кликните изабрати.
>> И сада надамо после Пар секунди сте можеш-- реду,
Ја ћу одузети и захтев.
О човече, ово це не раде.
У реду, ја ћу пробати неко друго.
Хајде да урадимо ово овде.
Живе демонстрације су ме зато што није.
Можда ћемо морати да врати само Зграда у потпуности локално,
али то би било у реду у овом случају.
>> Дакле овде, док је ово у ствари радна, шта ћемо да урадимо је само
створити врло једноставна Здраво Свет апликација.
Дакле, ово је Ксцоде.
А ако га нисте видели још, ит може бити мало застрашујуће у почетку.
Има пуно панела, ту је Много доодадс у разним областима.
Али само схватити да постоји Стварно неколико главних компоненти
овом развојном окружењу.
На далеком леве су све датотеке да су примењиве на ваш програм
или на ваш конкретан пројекат.
Ми ћемо бити клика око на неке од њих и ми ћемо
истичу највише важних подела током времена.
На крајњем десном, ми има низ атрибута.
И све те атрибуте, тамо су разни окна за атрибутима.
Оквири ће се променити у зависности од контекст главног садржаја које
дешава се да у средини.
Сада средњи може заправо показати ви мноштво ствари, на пример
Сама свој код.
Или сте у ствари можда бих-- када кликнете на прозору за уређивање који
је, узгред, само графички заступљеност вашег корисника
интерфејс за ваш апплицатион-- онда пане атрибути
на далеко право ће се заиста променити.
Сада постоји неколико остало ствари које желим да истакнем.
Можете некако истражују око у окружењу о сами.
Али једна од ствари да је било веома корисно
је овај тастер овде, горњем десном делу прозора.
Има ово дугме да Изгледа да на далеко
лефт има став затим два круга и сортирање
од две стрелице указујући имеа.
Ако прелазите стандардни едитор, који
је далеко лево један, један који је изабран подразумевано,
и два круговима преклапања једни друге, оно што заиста добити
су двоструко стакло поглед.
>> И ово је заправо ће бити корисно за нас
када треба да повеже артикала у УИ на коду.
И причаћемо више о , само који тренутак.
Али схватите да ако добијете чак више окна лике тхис,
можете поједноставити свој поглед само мало кликом назад
на једном уредника.
За сада је добро.
У основи имамо код себе лево, приписује са десне стране,
и шта год да је радимо овде у самом центру.
>> Тако сам овде кликнуо на главном монтажној траци.
И сторибоард, опет, је начин на Ксцоде
да можете креирати вашу корисничку интерфејс користећи само повуците и испустите
технике.
И тако за нашу врло Прва примена ова
је управо оно што ћемо урадити.
Идемо да иде на далеко доњи десни део
екрана, који садржи разноврсност корисника елемената
да можете да кликнете и повуците да креирате свој кориснички интерфејс.
>> Сада све то елементи се зову погледа
јер су снабдевање неку врсту погледом.
Постоји поглед слику, за пример, да заправо покаже
Слике на корисничком интерфејсу.
Има сто поглед на заправо показују табелу.
Тако даље и тако даље.
Постоји широк спектар погледа које можете одабрати овде.
Дакле, само за сада идемо потражити етикети.
Само да се крећете све листе које је тамо.
Али има претрагу бар на самом дну
да олакшава идентификацију специфичне погледа да ли стварно
Желим да превуците у ваш кориснички интерфејс.
>> Фоунд моју ознаку.
Идем да га довукли овде, директно на мом примеру апликације.
Управо тамо у средњем изгледа добро.
И ја ћу да куцате "Хелло Ворлд!"
Хит Ентер.
Сада имам етикету.
То не изгледа као да је центриран сасвим исправно.
Тако да могу покушати да поново-Центер га.
Срећом нуди ово води да би се ствари много лакше.
Ја ћу покушати да га саставити.
Надајмо се да ће заиста радити овде.
А ако се то не деси, за који тренутак то ће у ствари појавити на мом иПад.
То је овде.
Ту је.
>> У реду, тако да је то.
Завршили смо.
Ми смо створили наше веома Прва примена.
Сада очигледно то не уради ништа.
То је само етикета.
Нема везе између кориснички интерфејс и код.
Дакле, ако смо стварно хтели да се та веза,
ако ми заправо желели да имају неку врсту комуникације између елемената
да постоје на Екран и код који
омогућује нам да контролише ти елементи, затим
ми заправо треба да погледати на самом коду.
>> Дакле, ово је оно што се зове ВиевЦонтроллер.свифт.
А за, посебно за Ваши првих неколико програма,
ово ће бити нека врста Највећи део кода који сте ентер--
ће бити у овом документу овде.
Има пуно ствари то је овде до сада, зар не?
Има увоз УИ Кит класа, оверриде, [? функ,?] све ове различите ствари.
И то није сасвим јасно шта то је да све ово значи.
Па хајде да корак уназад у гостима из Ксцоде на кратко
и погледамо саму језику, брз.
>> Дакле са свифт, то је било у Дизајн и развој
на Аппле за око четири године на моју разумевању.
И ту је неколико карактеристика о томе да су стварно јасно.
Пре свега, то је саставио језик, баш као Ц.
Тако да прво морају да саставити га и онда га воде
пре него што заправо можете изврши код који доводи.
Али постоји, за разлику од Ц, интерактивни затражити да се можете покренути
и укуцајте произвољне команде у.
И врло слично као ЈаваСцрипт конзоле, који можете бити упознати са сада,
то је заправо ће проценити они команде и пружају Вам излаз.
А они чак узели да на следећи ниво
и они су створили нешто називају игралишта у Ксцоде
да вам омогућити да визуелно рад са кодом.
А ми ћемо заправо видети неке примере од тога у само мало.
Он је базиран на Ц Ц подвлачи то, јер сви прикупљачи
створити код из Ц и створити објекат код са њом.
Али заиста акције релативно мало синтакса.
То ће изгледати прилично другачије.
Биће неких сличности.
Али ту ће бити доста разлика
у односу на, рецимо, ЈаваСцрипт или ПХП.
И ми ћемо указати ово у који тренутак.
>> Сада један од највећих ствари о свифт то је лепо
је да, нарочито у поређењу Ц, то значи да је безбедан.
Све у њему је циљ да бити веома снажно откуца у.
У ствари то је готово нервира у почетку, када први пут
почну да раде са брзим, колико много је спроводи свуда врста.
Све што је стринг мора да остане ниска.
Веома је тешко да те некако претворити она или присили га у некој другој форми.
>> И опет, ми ћемо показати примере ово.
Али, на крају схватити да ово је значило да те заштити,
и ви мислим свој код, од црасхинг у некој страшној начин када
имате неку врсту неприлагођено типа.
И опет, ради са њим.
Зато што ће бити фрустрирајуће на први док покушавате да схватите зашто баш
постајеш ово необично еррор бави врстама.
Али то ће се исплатити на крају.
>> Она се бави аутоматски управљање меморијом,
тако више не и ти морају да се баве стварима
као маллоц и фрее и све од ове ствари.
И то је такође намењен за генерализације.
Па док можемо користити Ксцоде на створити иОС апликације и Мац апликације,
можемо такође само га користити као скрипт језик.
И тако можемо користити сорт од умјесто ПХП или уместо
Питхон да стварно брзо парсе и процес
неки подаци који имамо на нашем рачунару.
>> Има широку палету модерног карактеристике, оптионалс, мутабилити,
генерика, затварачи и много тога ствари које могу или не морају препознати.
И то је само нека врста несрећна део језика који неке од ових
некако футуристичких, модерним елементима који налазе се у оквиру елементи су
тако дубоко укорењена да сам заправо хоће морају научити ЦС50.5 мало.
>> Морамо да научимо више мало о неким од карактеристика како
да заиста разумемо шта се дешава даље, и тако да можете погледати код
и не осећам потпуно изгубљено.
И видећете шта мислим од које за минут.
ОК, доста овога хајде-- некако теоријске ствари.
Хајде да погледамо ствари наше Први свифт програма.
То је једна линија кода.
Лине 14 овде, то каже за штампање Л Н здраво ЦС50.
>> Тако да је пар ствари које је веома различит о овоме односу
да ствари које би вас могле користи за из Ц, на пример.
Један од њих је да нема интмаин, нема укључују секцију,
постоји ниједна од ове екстра ствари.
Укључују, као стандардна И / О, попут библиотекама
да заправо пружају стандардне карактеристике језика,
се аутоматски укључени као Део стандардне библиотеке Свифт је
и да се аутоматски увозе.
Не морате да урадите да увоз ручно.
>> Интмаин не постоји јер главна улазна тачка за шифру
је заправо у почетак кода.
Тако да било код које имате од почетка
заправо ће се извршити на старту.
Дакле, ово заиста у великој мери поједностављује.
Обратите пажњу и, да нема зарез.
Нема семицолонс на том језику.
Ставио изјаву на индивидуалном линији
а онда следећи ред представља другу изјаву.
Ако желите да ставите мулитипле изјаве онлине,
онда имате одвојите га зарезом.
Али у највећем делу, за добар стил, ми смо
никада неће видети зарез за сврха раздвајају изјава
у СВИФТ.
Како се то заправо ради?
Па веома налик Ц Ми заправо имају саставити ово.
И тако можемо да урадимо је да коришћењем Свифт ц и онда 1.свифт.
А онда после пар минут ово ће саставити
и онда ја могу покренути тему један.
И од њега ће само рећи "Здраво ЦС50."
Страва, тако да идемо.
Ту је наш први Хелло Ворлд.
Хајде да пређемо на број два.
>> Сада у ово-- то се променило благо, јер док Нормално ви
Па-- у ствари увек имаш да састави брзу апликацију пре
стварно извршавати То-- један од великих предности
да сам алудирао на раније је то било Свифт заправо може да се користи у врсти
од псеудо-интепретативна режиму, тамо је у ствари попут преводиоца.
Али шта то ће урадити је ту је, у ствари, свифт апликација
да можете покренути.
>> Тако на пример, ако само укуцате Свифт овде, шта ће се десити
је да ћете добити упит.
А можете уписати своју Свифт код, принт здраво, и покрените га.
И то ће заправо принт-- добро, то се није одштампао у овом случају
јер штампана у средини оут, која није видљива овде.
Али то је заправо у стању да функционише.
И тако у овом случају, ја сам само ће користити ово као скрипте.
И ја заиста могу покренути овај код тамо.
Тако начин да ја у ствари покренути то ће бити мало другачији,
али видећете да за који тренутак.
Сада, у овом случају шта ћемо да урадите је да прво дефинишете променљиву.
Дакле, ово је како дефинишемо променљива у брз,
се користимо пустити кључну реч, а затим по имену променљиву,
а онда пружамо неке инитиализинг податке опционо.
Тако је овај случај смо дефинисања константа зове име,
а ми ћемо користити да у излаз нашег принт линије
На самом дну, здраво име.
>> Сада приметите да уместо користећи% с, можемо енкапсулираш име ово
варијабла у / () и могу да цонцатенате у садржају ове
стринг у овом низу.
Сада за разлику од Ц, стринг Стварни реални тип у СВИФТ.
И тако се поред седи интс и поред
дубл врло лако и наравно односу
да неке од другог језици које смо до сада видели.
Дакле, ово би заиста функционише баш као што се и очекује.
>> Ја могу покренути 2.свифт.
И видимо да је моје име заправо спојени у, "Здраво Дан."
Ок, супер.
Прелазимо на број три.
Сада је то био мало белог лаж коју сам
рекао да је начин на који смо изјављујемо варијабле био је да користите Лет кључну реч.
Онолико пута колико можете евентуално да ли урадити желите да користите пустити, јер оно што ради
је она дефинише константу.
И то говори брзо да може оптимизира брзину ваше апликације
јер зна да да променљива се неће променити.
>> Тако оценити пажљиво кад ћеш користити
променљива за сврхе да га мењају.
А када ћеш створити променљиву само
да држи неке податке и то је Не заправо неће променити.
Дакле, ово концепт непроменљивости, Није ваљда да промени,
је важно чак као далеко доле и дефинисање променљивих.
Дакле овде смо дефинисали име, нека имена, а у овом случају
то је константа, која је од типа стринг, а то је једнако Дан.
>> Дакле док је у пре Верзија, она инферс-- и "она"
Мислим свифт-- Свифт изводи тип података
да смо ушли у променљивој.
У овом случају, можемо бити експлицитна.
Па да онда име ово променљива је име, затим дебелог црева.
И после две тачке и ми наведите врсту података.
Тако више не то је Инт име или стринг наме или нешто слично.
Али уместо тога нека етикету, ми смо дефинисање или не
то је константа или променљива, следи имену,
затим типа факултативно.
>> Дакле у овом случају смо дефинисања ово име је стринг.
Говоримо је Дан.
И сада имам још једну променљиву, у овом случају то се зове ознака.
Али приметите да је префикс са вар кључну реч.
Означава вар кеиворд да је ова променљива може
се мењати у каснијој тачке у време, негде доле у ​​коду
можемо заправо и то променити неће нам дати неки конкретан грешку.
>> Можемо да урадимо стандард Надовезивањем Овде оператер користећи симбол плус
да заправо додати наш наме у овом низу.
А онда можемо одштампати као што смо видели пре неколико тренутака.
Сада рецимо да вас желимо да створимо променљиву
али не желите да га иницијализовали још.
Не увек желе да стави било какве податке у њему.
Па мораш да кажеш Свифт шта тип података
ће бити пре него што можете заправо га дефинишу правилно.
>> Дакле, у овом случају, када смо дефинисано променљива се зове разреда морамо бити
експлицитан о својој врсти, јер не може закључити само гледа
на инитиализед података да дајете до њега.
То ће нам дати грешку, ако се Само тип вар разред, на пример,
јер нема тип стога.
Дакле степен = 100.
Тако да 100 је цео број, зар уклапа врло лепо у то.
Она ће наставити да функционише.
Можемо да видимо како онда могу цонцатенате ово у.
Сада можете бити искушење, ако вас стварно
желео да спојите разред у други текстуални низ,
у други стринг, који сте управо би користити тај исти Надовезивањем оператера.
А то би нормално било истинито.
Али Свифт неће дозволити да имплицитно променити врсту података.
Дакле, у овом случају, то линија, 25, неће успети
јер разред је цео а не стринг.
И тако постоји несклад сет типова.
Дакле, морате бити експлицитна када желите да промените ове податке,
када желите да присили ово Подаци у другачију врсту
и кажу, у реду, ја желим да се Ова оцена, који је цео број,
и претворити га у стринг.
>> Тако сам узети великим С стринг све типови, приметићете, капитализују,
Инт, Доубле, Стринг, тако даље и тако даље.
Сви они су капитализоване само да би се ствари лакше.
А ми ћемо рећи искористе Стринг пасс у њега разред.
И то ће створити стрингована тог цео број.
А онда можемо цонцатенате два веома лепо.
Сва питања о овим стварима до сада?
У реду, хајде да плуг до броја четири.
>> Хајде сада да причамо о неким напреднији структуре, попут низова и петљама.
И за разлику од Ц, низови у Свифт нису заступа показивачима.
Показивачи у Свифт, иако постоје, звали
као несигурним показивача или неки сличан тип овако,
они не изложени вама нормално.
Тако постаје веома тешко за вас да манипулишу
меморија директно на рачунару.
>> Дакле низови су само тип података.
И они означена коришћењем овакве од сада стандардни квадрат носач нотација
да сте већ видели.
Али када заправо желе да дефинишу тип променљивој
као низ неких Посебно тип, онда сте
стави тај тип у загради.
Па шта ја говорим овде је то Ја стварање променљиву названу
оцене типа инт арраи.
И ја опције коју једнака неке инитиализед подаци, који у овом случају
је 100, 0, 90, 85, која је само Колекција произвољних разреда овде.
Сада у овом случају сам могао, запамтите, уклоните тип,
и било би могли да га закључити на основу иницирали података.
Али, ако сам уклоњен ово и Морао сам да га поставити касније,
онда би морао да се уверите да имам тип тамо.
У реду, идемо заједно.
Тако смо можеш-- низова пружи нам сорта
метода кроз те дот нотацији у тебе су вероватно сада упознати са.
Тако градес.цоунт, на пример, нам говори управо број
елемената који су садржан у овој низа.
>> Ако желим да додам аддитионал-- Сада приметите да је ово вар
а нисам-- ово је променљива а не константна, која
значи да могу да променим садржај овог низа, ја могу додати објекте у њему.
Али ја не могу само да кажем разреда а затим у загради
четири, јер ће то бити изван граница грешке у овом случају.
Ако желим да заиста промене размер низа,
Морам да користим метод тачка додајте у додати нешто на самом крају.
Ја могу, међутим, промена индивидуални индекси.
>> Тако сам могао користити оцене и онда квадратних заграде
нула да манипулише овај први индекс и тако даље, као што то обично очекивали.
И ја могу да урадим исто да стварно примају податке из и то.
Сада постоји и нека врста фенси метода да се то постигне, оцене плус екуалс
а онда још индекс, која ће аппенд--
или не други индек-- али други списак који
ће додати тај списак на полеђини разреда.
И разреда ће онда садрже све то.
Али то је нека врста додатног ствар Само да вам показујем за забаву.
>> Сада постоји за петљу.
А ово је почетак, где ствари почињу да се мењају мало.
Обратите пажњу како ово за петљу је разликује од петље за у Ц.
Сада ћу напоменути да за петље у Свифт цан
бити да изгледа као на петљи у Ц, али има много више корисних конструката
који у суштини елиминише потребу да имају за вар и једнако 0 и зарез и
мањи од неке дужине, тако даље и тако даље, зар не?
И ова конструкција је само један од њих.
>> За индекс, индекс је нова променљива, у овом случају, у распону.
И шта ја да кажем је да постоји Распон од 0 па све до
али не укључујући градес.цоунт.
Дакле, ово дот дот мање него знак представља
опсег вредности полазећи од нуле па све до градес.цоунт минус 1.
Постоји посебна оператер који постоји,
која је Дот Дот Дот, која би Мислим да хоћу распон нуле
да рачунају разреда закључно.
>> Али у овом случају, јер су низови су нула индекс, ми наравно
не желе да иду у Максималан број разреда.
Ја могу сумирати оцене, као што можете да Очекујемо, и излаз све ове ствари.
Ок, идемо даље.
Хајде сада да причамо о функцијама.
У циљу дефинисања функцију користите функ кључну реч.
И опет, у Свифт морате бити веома опрезан са типовима.
Ви обезбеди да се параметри дефинисањем, на пример,
назив параметра и онда у Колин, тип података
да ли очекујете да параметар да прихвати.
>> Тако да смо у овом случају имају Функција зове штампање разред датотека.
Она прихвата променљиву названу Градебоок, односно параметар који се зове Градебоок.
И ми очекујемо да Градебоок да буде низ целих бројева.
Ако то Градебоок је празна, ћемо штампати једну ствар.
У супротном ћемо одштампати број оцјена да ово заиста има.
>> Сада, ако желимо да се врати нека вредност, онда начин
да смо изменили ова дефиниција је да заправо користе овај стрелице кључну реч,
или да користите ову стрелицу означитеља.
Дакле овде ћемо да дефинишемо функција зове просек.
Идемо да прихвати листу бројева.
И ми ћемо да се врате дупли, који ће, надамо се,
бити просек ове низа.
А да би то, како да заправо израчунавање овог просек,
ми ћемо узети суму и ми ћемо од Наравно сумирамо све објекте
у овом низу.
>> Обратите пажњу да постоји нова стил за петље овде.
Ми не морамо да се експлицитно о итератинг над сваком елементу,
али уместо тога може рећи за разред и оцењивању, значење
да за сваки ставка да имамо у ово,
обезбеди да је ставка у ово променљива зове разред.
И ја желим да урадим нешто са њом.
Зато ћу да сумирамо све ове податке и заправо врати двоструко поделу.
>> Сада приметите опет овде постоји Концепт цео број дивизије у Свифт.
Ако желите да удвостручи поделу јер желите децимале,
онда морате бити експлицитна, не само о једној страни,
јер то неће дозволити да вас да примора податке са обе стране ово,
морате заиста наравно обе поменуте стране у дублу
тако да сте веома експлицитан о пазећи
да радиш двоструко поделу.
>> Идемо даље.
Дакле, ако ја заправо желим да аццепт-- тако да у овом конкретном примеру,
ово је још увек команда линија базирана апликација.
И почињемо да видимо неке од ограничења младог језика
у да, иако можемо приступити аргументе помоћу
ово процесс.аргументс, то је још увек не нужно најчистијих
Оно што смо до сада видели.
Али у основи сам вам и да некако погледате овај код
и покушајте да схватите шта се тачно дешава.
>> У суштини оно што се дешава је да узимамо листу аргумената
и су их принуде у цели бројеви, а онда смо
ће користити то као начин за штампање од просека свих наших разреда.
Идемо даље.
Сада постоји још једна врста дата-- још подаци укуцајте уместо низова
називају речници, који су врло као хасх табеле или хашиш мапе
и слични и да ПХП асоцијативне низове.
Тако они имају идеју кључева и вредности.
>> И они и са дефинисана ово квадрат носач нотација,
али је разлика да речници имају
унутар квадрата конзоле, а колона.
А колона одваја податке укуцајте да је кључ и вредност.
Дакле, у овом случају, ја ћу да створи рјечник да прихвати неке оцене.
И то ће бити типа стринг: инт,
што значи да су сви тастери ће бити жице,
и све вредности оних тастери ће бити цели бројеви.
>> То значи да ја могу затим упућују на специфичан податке
Желим да користе те кључеве прилично него користи нумеричких индекса као И
би имала за стандардни низ.
Сад да видимо, ту је једна важна ствар
да сам и желим да поменем о ова секвенца кода.
А то је да постоји други тип података,
односно ту је ово Идеја података који је
садржан у Свифт зове Оптионалс.
>> А шта значи оптионалс је да признаје чињеницу
да понекад не идемо у добили податке да ли заиста очекујете.
И шта мислим под тим је-- немојмо погледај овог низа кода
Примењује који цитавом аргументи који су донесени на овом коду
и покушава да их претворити, покушаја подели на различите жице,
јер прихвата веома Посебну врсту аргумента.
А онда ће то покушати да примора жице које представљају бројеве
у целих бројева који су оцене, да сам тада да израчуна.
>> Дакле, у основи ћу користите ову функцију да подељена
постоји унутар Свифт стандардна библиотека.
Идем да прође у њу у стринг који желим да поделимо.
А онда у коришћењу ове некако фанки синтаксе, која
Ја не знам да ли ћемо доћи до, али можда ми
ће заправо навести прецизне карактер који желимо да поделимо на.
Па шта то заправо изгледа?
Хајде да погледамо заправо ради овај код.
>> Тако на пример, рецимо имам квиз и имам 50 на то.
И ја имам ПСЕТс и Имам стотину о томе.
И ја тебе-- постоји други квиз и имам 40 на то.
Ја ударио Ентер, и на крају оно ће се десити је то оно што ради
изводи ових параметара, цијепање жице на овим колонама,
признајући да постоји два елемента у сваки,
и то у суштини је праћење сваког.
>> Тако да имам у мом речнику квиз, чији вредност представља по броју 50,
Имам ПСЕТ која има вредност 100, и квиз један који има вредност од 40.
Затим касније у коду И заправо просеку све те вредности
и листу свих кључева да посебно рјечник.
Али ово је важно тако да можете приметити
шта се дешава, јесте да оно што смо желите да урадите је да искористим ову стринг
и поделите га на овог лика, које можемо поново урадити са тог расцепа
Функција употреба оваквих Занимљиво синтакса која постоји овде.
>> Само за сада претпостављају да је то у реду.
Ми ћемо погледати више на ово у само мало.
Али сада је занимљиво аспект који смо заправо
желе да пробају да га претвори у ово стринг у цео број.
Али у другим језицима шта би се могло догодити је
да бисмо вероватно покушати да то уради и било вратим
нека врста сентинел вредност као негативан
или можда нула или нешто слично.
Или можда само би изазвао грешку.
И ми би морали да онда ухватити ту грешку
а затим покушајте да урадите нешто на основу чињенице
да ове конверзије на цео број пропао.
Тамо ова идеја од опциони долази у.
Можете заправо створити тип података који је инт знак питања, на пример.
То значи да овај цео број је, заправо, опционо.
А шта ће се десити је да може садрже цео број, или не могу.
Он може, у ствари, бити та друга Идеја, у потпуности зове Комбинат.
У којој то значи да постоји Не вредност уопште у то.
Није ни нула, једноставно нема вредност.
Нема апсолутно никакве вредности представљени.
>> И то је оно што се ради ова линија 71.
Да ли је то она говори да сам желе да пробају да постави вредност,
променљива зове разред, једнак конверзија ниску у инт.
Па сам се ту жицу, Овај први компоненте,
односно други компоненте, јер ово
је нула индексиран, овога стринг који сам поделила.
И ја желим да претворити да на цео број.
Али не може увек наставити нормално, јер замислите
шта би се десило да, уместо типа број, укуцам наравно као асдф.
>> То ће успети.
Није ваљда да буде могућности то претворити да на цео број
као што сам очекивао.
Тако уместо да кицк офф нека врста грешке,
имамо ту идеју опциони.
А то значи да користећи ово знак питања могу да кажем,
У реду, могуће је да ја могу узети ово, зар претвори у инт,
и ставио га у променљивој, који ће такође бити инт.
Ако је тако, онда то значи да је ово била успешна
а овај први део блок може наставити.
>> У супротном, то није успело.
Нема вредност у граде-- или пре нема вредност у постојеће,
и ја стварно морам да покушамо да хандле овај услов грешке.
Идеш да види ово знак питања све време
у Свифт и у примеру код за Свифт.
И у ствари Комбинат оператер, ова врста од знаком питања, оптионалс део,
ће бити вероватно један од тежих ствари
да некако замотати главу око док у ствари раде са њим.
>> То би могло да сада смисла.
И у ствари, кад сам био писања кода узорак за ово,
Свакако сам схватио шта се дешава,
али ме и даље ухватио изненађење свако мало
кад бих сматрају да неки подаци је у ствари
нил верзија, опционо верзија података који сам очекивао.
Дакле, само схвати да ако вас имају опциони верзију
морате да се распакујем да Подаци из овог прозора.
>> Дакле, то је нешто као ја-- замислите да вас имају кутију и садржи нешто.
А шта вам је потребно да урадите је да постави питање,
да ли је могуће да је ова кутија заправо садржи податке који тражим?
Ако је тако, онда повучеш података аут и стави га у овој варијабли постојеће.
Ако не, онда морам да занемарити садржај овог прозора
заједно јер њега буквално не садржи ништа.
>> Сва питања о овоме?
Ок, идемо даље од овог некако командне линије заснован ствар
и почети гледајући неки од технологије
да Ксцоде пружа нам у облику игралишта.
Тако да је много Могућност овде са Свифт.
А ако отворите Ксцоде и то пита вас шта желите да урадите,
можете отворити игралиште и само играти око
са пуно различитих структура и аспекти језика
пре него што уопште почнете додирује иОС СДК или Мац СДК.
>> Дакле овај случај, рецимо да сам бих-- Имам релативно вештачки пример
овде, али носе са мном као некако смо од раде кроз овај пример.
Рецимо да морамо да урадимо много о експонената са фиксном вредности,
Као што знамо да ћемо морати да уради много квадратних овлашћења, на пример.
Тако ћемо узети неку вредност к, ми ћемо то квадрат,
ћемо узети неку вредност и и ми ћемо га квадрат.
Тако даље и тако даље.
>> Сада смо у ствари можда само створити снага од 2 функције за ово, зар не?
Тако бисмо створити моћ 2 функције.
Ми ћемо прихватити дупло.
Ми ћемо оутпут-- или ћемо ретурн двоструки тип.
Узећемо овај резултат а онда за два пута
оно што заиста и резултате, који је на почетку постављен на вредност једног,
и помнози к.
Дакле, у суштини имамо к пута к овде.
>> И тако онда ћу тада моћи, као што смо можда очекују, узми ово, покрените моћ од 2,
пружају на то неки подаци, ја волим 2.0.
И ми се да видите резултате овде 4.0.
Рун моћ 2 на 3,2 и ве доћи до погледајте наш резултат, 10.24.
За сада је добро, зар не?
Сада размишљамо, добро, у реду.
Сада сам у ствари треба да уради доста овлашћења 3.
Зато ћу цопи пасте све ове кода, промените име функције из
моћ од 2 до 3, моћи и свега ће бити исти осим за ову вредност
Овде, овај распон, 1 ... 2.
>> Дакле, уместо понављања Ова петља двапут,
Желим да поновим ову петљу три пута.
Тако да сам само променити ту вредност са 1 до 3-- односно од 2 до 3.
Дакле опет, исти број, то је једина промена.
Сада ово такође ради.
Снага од 3 остварују на вредност 2.
Добијамо 8.
Тако 2 коцки.
И 3.2 коцки је 32.768.
И до сада је добро, зар не?
Али надам се да је ово мало Мало црвеном заставицом за вас
у које сада имамо неки дуплирање кода
осим за неке врло мали мењају од једног до другог.
Дакле да ли постоји неки начин да можда би могли да се поједностави
овај проблем, где смо у ствари може, време извршавања, схватим неке,
пружити нам неку функцију која има управо моћ да желимо.
>> И ту је та идеја о затварачи, који је заиста, заиста
важан у контексту Свифт, и у многим другим језицима.
Али вероватно ћете видети она користи више у Свифт
зато што је уграђен у овом језику
него хоћеш у другом такође модерне језике.
Тако идејом затварања је ово, је да смо ми
може имати функцију која је требало да бити генерички функција, генерички снага
функције.
>> И ова функција ће прихватити ово експонент да ми заправо
желимо да створимо.
Тако, на пример, први инстанца, желели смо моћ 2.
Тако да би обезбедио моћ а затим у загради 2.
А сада погледајте шта ово заправо враћа.
Ово заузима улаз прајмер зове и то је цео број,
а враћа ово лудо лоокинг ствар у загради парентхесес--
доубле и онда арров дупло.
>> То значи да сам ће вратити функцију.
Не враћам други тип података, ја сам
у ствари враћа функцију да има овај параметар, који
прихвата дупло као улаз и излази двоструки као повратну вредност.
И као резултат, јер сада сам звао моћ, пролазећи у некој вредности за и,
и ја стварам ово друго фунцтион-- обавештење да постоји
још једна функција која је стварају Унутрашњост ово-- шта радим
Ја се тада може да промени да вриједност, да је један
Вредност коју сам променила од 2 до 3, ја сад да га год.
>> И ово потраје.
Тако сваки пут да ја зовем власт од, у суштини шта се дешава
је да сам се вратио функцију.
Обратите пажњу да овде сам дефинисано нова променљива зове трг.
Ја сам сет је једнака снази, под условом ову вредност 2 на власт.
А шта то вратио је функција.
Дакле квадрат, променљива квадрат, је сада типа функције
да има ово-- оопс, крећите се горе Мало бит-- да има ову потпис,
прихватити двоструки и излаз дупло.
>> Па сад, шта сам урадио Ја сам је у суштини
створио неку функцију зове трг који прихвата никакву вредност и да ће га квадрат.
Можемо да видимо шта се дешава овде.
Квадрат 3 на пример, значи идем да узме вредност 3 и упослио га.
Па како тачно то функционише?
Када сам пасс снагу од кад сам 2-- пасс 2 у ову власт функције,
ово променљива и је насељена са том вредношћу 2.
И то је на неки начин одржава у меморији.
То је нека врста одржан у држава негде у рачунару,
ми стварно не занима ме како или где у овом тренутку.
>> Али ја вратити ову функцију звао екпонентиате.
И опет, то није ни битно ста ова функција се зове,
ми заиста може назвати било шта, што прихвата двоструки и враћа двоструко,
али користи овај вредност и у њему.
Дакле, иако је то ова функција, ово екпонентиатер функција која је
враћени назад на мој променљива да сам звао квадрат,
она је садржана у њој ово појам шта год било.
И памти да.
>> Тако сваки пут кад зовем те функције које се сада зове трг, користи то.
Али то такође значи да ја могу створити још једну променљиву користећи
другачији моћ.
Тако да могу створити коцке променљиву, за Пример, пружају му моћ 3.
Сада коцка ће заправо узети неке вредност и коцка да и вратити га.
Тако можемо видети да добијем вредност 8 од тога.
>> Али то вредност год нема променило зато што су
одржан у врсти независних варијабли.
Они су на неки начин одржава у независни простори у меморији.
Тако ће увек имати коцка к снази 3.
И трг ће увек имати к за моћ 2, која
значи да ће увек квадрат квадратних бројеви, као да очекујем.
И коцка ће увек укоцкавају бројеви, као што сам очекивао.
То такође значи да понекад можете гет неку врсту функи лоокинг синтаксе
где имате моћ у врло дну екрана овде, моћ 5.
А ти прође у резултат.
Ти то зовеш функцију која је враћени са бројем 4.
И шта у суштини ово је 4 петој власти,
можемо видети резултате тамо.
Са мном до сада?
>> Дакле ова идеја се назива затварање, јер оно што ми радимо у суштини
је ми инкапсулирање неки подаци инто-- врста
извесно затварање ове податке у функцији и ми смо
бити у стању да поново користите ову функцију.
Сада ова синтакса мада може заправо бити поједностављен велику количину.
А ту је и много могућности у Свифт за ову поједностављења.
И то је оно што врста накнадне они заправо погледате.
Дакле, у 7б на пример, ми Користим ову потпуно исту шифру.
>> Али сада уместо заправо дефинисати функцију
унутар ове снаге функционишу и дају јој име,
и онда се вратити име те функције, која
тада се користи као део ово затварање, уместо да смо
само да га поједноставити.
Не треба нам ова функција да буде именован.
Дакле, ово је концепт анонимно функција где смо онда можемо
прихватити као улаз, у загради овде, променљива к која је типа доубле.
>> Идемо да врати Двоструко.
А онда слово, н, је почетак ове функције.
Тако приметити да је све ово је у оквиру витичастих заграда
а ми дефинисања анонимно функционишу овде.
Само једноставнији начин дефинисање исту ствар.
У реду?
Али чекај, Свифт заправо нам дозвољава да иду даље и још више поједноставити,
јер стварно ми не радимо стало да овај параметар је
назван неки посебан ствар.
Заиста оно се може назвати било шта и још увек можете да користите тај први параметар.
>> Дакле, у суштини постоји ова посебна Врста података у анонимних функција,
постоји тај посебан назив променљиве у анонимних функција
да почнемо са знак доллара и представљају
бројеви параметар, нула индексирани, за ову функцију.
Тако да пар ствари дешава.
Ево ја ћу да се вратим, а онда коврџава браће представља функцију,
зар не?
>> Обавештење да не дефинисали параметара типа или повратни тип.
Заправо би се могло закључити због потписа
ове оригиналне функције.
Тако можемо елиминисати да као могућност.
Али и ја могу да користим доллар сигн нула до представљају ову прву параметар који је
прешла у овом анонимном функцију.
Тако је поједностављивање још више.
У реду?
До сада, тако добро?
>> Сада је ово тип-- зар не ремембер тхис долара знак нула
да смо видели у овом коврџаву браце да смо видели само мало
пре у овом Свифт шест пример?
Било је баш овде.
Приметите да је управо оно што гледамо,
је да смо прошли у овом подељеном функцију
анонимни функција која проверава први параметар
да видимо да ли једнак симбол колона.
И то је управо оно што је догађа, јесте да све
ми доинг-- повратак кључна реч подразумева
у овом цасе-- смо повратка ова вредност где смо поредећи
Први параметар против ово лик дебелог.
И тако то некако демистификује ово.
И ви ћете да видите ову конструкцију много у Свифт синтакси, учини имајте то
на уму кад си узимајући Погледајте ово.
Сада можемо сићи шине мало
и го заиста фенси да емисија чак још мало Свифт моћи.
Можда ћете чак видети неке од њих у узорку кодовима.
Зато идем показати ово вама.
>> У суштини оно што можемо да урадимо јесте да, прво свега, било је некако Непотребно за мене
да спроведе све те моћи Код јер ако увезете Дарвин
библиотека, заправо садржи функцију зове бам да то ради за вас.
Тако можемо још више поједноставити и имамо снаге до функције сада само
бити диван један брод где смо управо ретурн ову функцију да анонимно
прихвата доллар сигн 0 као база и И као њен експонент.
>> Али можемо добити стварно, стварно фенси Вхен Ве
схватите да Свифт има Много снаге испод хаубе.
Много оператера који смо бави,
плус знаци и симболи дивисион и све те ствари које сте нормално
раде са са типовима података у програмском језику,
су заправо прошириви у Свифт.
Па шта то значи по томе што се може дефинисати наше оператере.
>> Тако сада сам уморан од куцања у свему овоме пов а затим заграде, а затим
база.
Не желим то да урадим.
Ја стварно желим да имам оператер који ми омогућава да урадим.
Дакле, могу да кажем да желим Свифт да створи оператора, звезду
стар-- успут не могу користити карат јер карат је оператер који
ради нешто сасвим друго.
Тако да не желим да сортирају од сударају са тим.
И тако оно што видите у разним језика, укључујући Питхон,
је као стар стар оператора да представља експонената.
>> Дакле, то је једини разлог Зато сам то урадио.
И то ће бити Тип инфикс оператер.
И морам да пружи до њега неке информације
о првенству ове оператер тако да је лево асоцијативна.
То је као релативно Висок предност у односу
да сума или умножавање.
То је виши приоритет него сви они.
Тако даље и тако даље.
А онда сам дефинисати функција која заправо
диктира шта ово оператер ради.
Тако под претпоставком да имам лево ханд сиде и десно,
што би било можда Боље променљиве име за ово.
Лева страна и десна страна.
Ја тада могу искористити ову моћ лева страна на десној страни
и врати ту вредност.
Дакле сад је супер слатко.
Све што треба да урадимо је 2 звездице звездице 3 а то је 2 за треће силе,
и добијамо вредност од 8.
2 стар 10 је 2 до 10тх снага, добијамо 1.024.
>> Тако сада наша снага функције, која опет је другачији,
јер је цела идеја иза овога је да имамо једну функцију која
Увек узима неку вредност и умножава то-- односно
узима експонент на исти власт.
Дакле сад је још једноставније.
Дакле, сада је то само долар сигн 0 стар стар год.
Ми чак не морам више да користите бум.
>> Ок, ко је изгубио?
Радимо добро?
Сва питања о овим стварима?
Да?
>> ПУБЛИКА: Када тебе-- [неразумљиво] функ моћ год дупло.
Дакле, када враћате функцију.
ДАНИЕЛ Армендариз: Функ моћ год дупло.
Ох да, ја не знам шта су и бројеви су.
Жао ми је због тога.
>> ПУБЛИКА: Зашто враћају функција [неразумљиво] кућиште.
Није долар нула звездица звезда И [неразумљиво]
наћи тај оператор са тим враћа двоструко [неразумљиво] дупло?
>> ДАНИЕЛ Армендариз: Па хајде да одговорим на ваше питање
како сам ја схватио, а можете ми рећи ако нисам разумео питање.
Дакле, ово конструкт, коврџава браће знак доллара нула стар година,
је функција.
И то прихвата параметар који је заступа овај долар знак нула.
Повратак кључна реч подразумева у ово Веома кратко, анонимни функција синтакса.
>> Што значи да у суштини шта ово говори
је да сам дефинисање фунцтион-- и онда ћу
Само га зову нешто-- где имам неке вредности и.
Имам и, што је двоструко.
И ја ти враћам дупло.
И ја имам у том повратку и-- жао, Нисам требао да зове ово и-- к.
О драги, драги ох, ох драги.
Кс-- нопе-- стар год.
>> Дакле, ово је само поједностављена верзија ове.
И тако разлог да имам долар знак нула је да коришћењем овог енцлосуре
значи да више немам да куцате бум, или више не радим
Морам да урадим нешто као 3 звездице са 2.
Само могу имати један Функција зове квадрат
да ће увек узети нека вредност као улаз
и заправо врати квадрат који.
>> Дакле цела сврха затварања је да некако енкапсулираш чињеницу
да сам увек желим да користим кад год и Позивам ту функцију као моћ
када узимања овог експонент.
Дакле повратку онда, функција која прихвата
доубле, која је база, и враћање резултат тог експонент
је кључ овде.
И то је главни разлика.
Било је само помало процват.
>> Ово није било другачије односу на претходним примерима,
али то је само мало можемо напредовати може заправо
створи оператор у Свифт и заправо радим ствари са њим,
која је врста хладном ствари.
Да ли да одговорим на ваше питање?
Свеет.
Још нешто пре него што наставимо?
У реду.
>> Сада ова врста моли Питање је то-- добро реду,
Сада имамо могућност за функције да се врати.
Можемо ли такође проћи функције као података или као параметре другим функцијама?
И у ствари можемо.
Па рецимо да имамо сви исти кода.
Имамо квадратни променљиву да ће квадрат овај код.
И имамо коцке променљиву да ће цубе неке податке.
И ми у ствари желимо да примените на широк спектар бројева.
>> Па шта бисмо могли доћи у искушење да уради, наравно, што је свакако важи,
је тако прелазите преко ове листе бројева и примењују моје функције квадрат и коцку
и добили двије нове листе као резултата да су ова оригинална листа на квадрат
и укоцкавају, респективно.
Савршено прихватљиво.
Али шта је ствар која видимо овде је да имамо,
Опет, дуплирање наше кода.
А можда постоји шанса за нас да поједностави ово мало.
Шта ако постоји начин за нас да заправо увек поновити преко неке листе
и само прелазимо на тај магичан функционишу променљиву која
представља функцију да желимо да примените
на сваки предмет у овој листи.
Ово нас доводи до концепта шта се зове веће функције реда.
И то је у суштини оно што ова је, је да можемо да створи функцију.
>> И у овом случају то се зове маппер, само да му дати име, само
мапирање преко сваке појединачна ставка у листи.
Где узети списак и ја узети функцију.
И то функција, наравно, има одређену потпис.
Она прихвата као параметар контру и то ће излаз је двоструко.
И цела резултат ова функција ће
да нова листа која је типа Доубле.
У реду?
>> И шта ћу да урадим је применити ову функцију ф
сваком елементу у мојој листи.
И репли-- и прилично врати ова нова Листа као резултат, што је стварно кул.
Сада могу проћи око функције.
И ова идеја вишег реда Функције је стварно важно.
А ово је заиста само маппер Имплементација сиромаха човека
о функцији која је изграђена у Свифт зове карту.
И управо то ради, можда чак и мало боље.
>> Ово је само једна од генерички, поједностављена верзија која
омогућава нам да видимо Концепт који се односи овде.
Сада погледати на начин који сам може заправо примењују свој квадрат
и моји Цубе функције на овом списку бројева.
Ја водим своју маппер.
Ја пружају на то мој списак бројева.
Ја пружају на то у функција која се дешава
да се обрати сваки од тих индекса.
И то ће бити излаз као резултат.
И ја ћу се да видим да сам на квадрат и укоцкавају моје бројеве као резултат.
>> И наравно маппер ће узети било каква анонимног функције.
Чак можемо видети да сам створио нова анонимна функција која
Само треба неко параметар и дели га са 2.
И видимо да имам, у ствари, подељен моју листу са 2 уместо.
Цоол?
До сада, тако добро?
У реду, хајде сада да вратити на ову идеју.
Хајде да спроведе ово назад у контексту Градебоок.
>> И ако то урадим, можемо видети да ја могу примењују широк спектар ових опције--
или широк избор ових виши функције реда
да стварно поједноставити своју способност да мноштво ствари на листама бројева.
Тако на пример, ако ја узети листу бројева,
једна од вишег функција реда да постоји се зове смањити.
Шта се смањи ради прилично него карте, своди ће
узме два елемента у листи, ће бити потребно неко функцију да
пореди два елемента Листа, и то онда ће
некако оутпут-- излаз за ту функцију
Биће то још један елемент који ви онда упоредите другима.
>> Да би могао да користи ово да заправо збир бројева у вашој листи.
На пример, ако сте имали списак 1, 2, 3, 4, 5,
узмете прве елементе, 1 и 2.
Можете се пријавити на њега додавање функција која узима та два елемента
и избацује један од тих елемената, који би био вредност 3.
Онда ћемо узети ту вредност 3 са следећа елемент листе, сум она двојица,
а затим наставите на дну листе.
>> Ми смо смањење список на једну вредност.
И то само тако деси да је симбол плус
је оператер, баш као што смо управо видели.
Ово је оператер заправо функција која
има управо овај списак који смо би желео, а ових особина
да би желимо.
Тако сам вам и да погледај ово.
Желим да те некако потез о из неких овог кодекса
тако да можемо да погледамо неке стварна, реална, истина Свифт у Ксцоде,
у иОС развој.
Али погледајте ово и видите да ли можете
парсе кроз шта се дешава са неким од ових вишег реда
функције, укључујући филтер, смањују, а чак ћете
види негде овде карти.
То је овде.
Где ће бити потребно секвенцу оцјена и она заправо хоће
мап их помоћу прекидача конструкт, који сте можда препознати из Ц,
али у ствари то је много више моћнији од прекидача конструкт
да имамо у Ц.
>> И ми ћемо применити да би сваки елемент у листи
и заправо обезбеђују писмо разред сваке
од тих разреда користе све ове појмове да смо управо причали раније.
Хајде сада да заобиђе за само минут и разговарати о Структуре.
И тако Структуре су чекање у Ц да смо су били у могућности да дефинишу нови тип података.
Структуре постоје унутар Свифт.
И то учини много других конструкција називају енумс и класе, које стварно
Користим ову идеју потпуно други ниво.
>> И у суштини то је само начин дефинисања новог типа података.
Дакле, ако сте добијам-- ако дођете преко класе или Струцтс или енумс,
Немојте се збунити од њега.
То је само начин дефинисања нека нова посебан тип података.
И ово је стварно важно када говоримо о иОС апп развој
јер све то постоји у апликацији за иОС
је у суштини предмет неке врсте.
И објекат је у основи класа или енум или струцт.
>> Дакле, у овом случају сам дефинисање новог типа података
да зовем процену то је нека својства, укључујући
Име и редослед разреда.
Тако један тип процене да сам можда има на уму
би квизови, на пример.
Ја бих желео да имам процена да је квиз
и који је имао различите разреда повезана с тим, за квиз један,
квиз два, тако даље и тако даље.
>> Или сам можда има другу врсту процјене за проблем поставе.
И ја могу да радим ствари.
Ја стварно могу имати функције у овој врсти
података, који су сада названи методе.
Дакле, ако сте икада видели метод реч, то стварно
је само функција која важи на веома специфичан класе,
или на веома специфичан тип података.
То нам омогућава да измените податке у року.
>> Другим речима, ако желим да додате разред мојој процени,
онда све што треба да урадите је да додајте на резултат који је улаз
на ту функцију на мој унутрашњи имовине.
Постоји још једна уредан конструкт овде у Свифт, што је овај Дот Дот Дот
оператер, што значи да је постигао могу Сада прихвати било који број целих бројева.
И резултати ће бити низ целих бројева који
Донети су на моју функцију, која значи да могу да урадим овакве ствари.
>> Ја могу да оцене и додати само обезбедити произвољне број природних бројева у њега
и заправо се обезбедити низ тих вредности у мом функцији
или у мом метода, као што је случај.
Сада је то важно јер све у Ксцоде, све у иОС,
је у ствари објекат.
Тако то на уму кад смо буст отворен Ксцоде
и идите даље иОС верзије два и три
и заправо иду на верзији четири.
>> И опет, све ово ће бити објављен на страници семинара.
иОС четири је нека врста пуну бловн имплементација основном апп.
А шта ова апликација ради то је учитава УИ, који изгледа овако.
Опет, ако кликнете на монтажној траци можемо види да је то оно што изгледа.
Ово је УИ.
Има титулу на самом врху.
Ја сам га назвао веб галерија.
>> У средини постоји елемент назива поглед УИ слика.
И на дну има алаткама са једним дугметом који
има стретцхи просторе који га омогућавају да центар усред ове палете.
А шта се дешава јесте да када ова оптерећења она скида ЈСОН датотеке које
садржан на серверу на другом месту, парсес тај ЈСОН фајл,
и ЈСОН фајл изгледа мало овако.
ЈСОН фајл изгледа овако.
Ту је.
>> Има име албума и има низ фотографија.
Свака од тих фотографија има име и такође
сами УРЛ који представљају јпег верзија тог појединачног фото.
Па шта се деси је да када је овај програм оптерећења, она преузима ЈСОН фајл,
парсес га, ставља све ово у еквивалент низа у иОС
апп развој, која је нсарраи.
И онда ја онда могу учитати ови подаци у апликацији
и учитати га на свом екрану.
>> Постоји слика која је напуњен помоћу дугмета на самом дну.
Ако кликнем Гет Нект Имаге, онда повлачи ту слику са интернета
и замењује ту слику у приказу УИ слике.
Тако да можете преузети ово и стварно погледај га на рачунар.
И то буилд а заправо саставити га на свом уређају.
Али у суштини процес био ово, креирајте сторибоард--
односно не цреате-- али изаберите скице сценарија.
И заправо ве'лл-- ако не минд-- узећемо само пар секунди
да заправо вам показати како је то урађено.
>> Само тако да како ствари могу постигло је направљен још мало
очигледна.
Еинзелзиммер апликација, ја сам ће позвати овај семинар
четири представља ово Посебно број.
Сачувај то на радној површини.
У реду, идемо да кликнете на прозору за уређивање.
И шта ћу да урадим је пронаћи свој слику поглед,
превуците га на мом корисника интерфејс и центар је.
Сада само центрирање нажалост неће учинити пуно,
осим екран да је то тачно величине.
>> Тако можемо да се убедим да је кликом на ове двоструке кругу ствари,
рушење ове поп менија овде и мења
да прегледате, где смо заправо ћу добити прилику да прегледате како
ово ће стварно погледати на другим уређајима.
Као што видимо, ми не знамо ни види га на овом случају.
Зато ћу затворити ово за сада.
>> И ја ћу да изаберете ова икона доле у ​​врло
доњи део екрана.
Каже Ресолве Ауто Иссуес Лаиоут.
Извини, то је одсечен на дну.
Али ако кликнем на то, оно што сам гет је ово забавна их-- нестати.
Оно што се деси је то поп уп да ми омогућава да додате недостају ограничења.
И тиме њему ће онда некако се забрави
у центру део Екран као да би се могло очекивати.
>> Сада, како би се добили ово дугме на врх тога, морам да идем у Едитор.
Иди на уградили у и клик Навигација контролер.
Шта да ће учинити је да ће додати скроз друга компонента на њега,
али ће заправо повезати то вратим у своју оригиналну УИ.
А детаљи, опет, ми не радимо Стварно треба да брину о сада.
Али ја желим да имам палета на самом дну.
Зато ћу провјерити показује Тоолбар.
>> И то даје у мом мишљењу, која је сада негде другде,
Видимо да је то повезано овде.
Сада пружа тоолбар на дну мог УИ.
Дакле сада, уместо избора Слике поглед, ја могу да нађем етикету,
односно тоолбар-- хајде да видимо, где је то?
Како се зове?
Буттон-- ставка бар-- итем-- је-- бара дугме ставка.
Бућ да тамо и примењују пар флексибилних простора са обе стране
да стварно центар који.
Зато сам створио свој УИ, у основи.
И ја могу да му дати име по дупли клик на самом врху
овде и кажем веб галерију и тако даље.
Сада опет, то су елементи да постоје сами.
И ја имам за повезивање им то ми кода који
Ја могу да урадим по опет доводи до ове двоструке кружићу,
мења из превиев.
Која, узгред, сада можемо да видимо је лепо средини и да ће изгледати добро
на различитим уређаја.
>> Свитцх то аутоматски, који ће би се појавила ВиевЦонтроллер код.
И сада овај део је важно.
Да би сте се повезали ово два елемента, ваш број на УИ,
изаберете ставку која желите да се повежете.
Дакле, у овом случају, ми заправо желе да кодира
промените слику која је садржана У оквиру овог УИ слике погледом.
Дакле, ако ви контролишете кликнете од поглед слика и драг,
приметићете да добијеш мало бар, кад пусти све ово поп
се ће се догодити.
>> И пише да ћемо креирате везу.
И одавде желим да га дам име, нешто као галерији.
Хит Ентер.
И ово заиста пружа променљива зове галерија
да сам тада могу референце у мом коду да промените слику, на пример.
Па како да код заправо изгледају?
Па опет, ја не желим да проводе превише времена на томе.
И ја вам и да преузмите и погледај.
Али један од највише Важан аспект је код
да заправо нађе неку слику.
>> Дакле, у овом случају желим да у року од мојим фотографијама
арраи, која је садржана у мом разреду.
Желим дефинисати име и УРЛ која били обрађени из ове ЈСОН.
Заправо питати уређај да УРЛ адреса, да донесе УРЛ из ове,
а затим наћи податке из садржина тог УРЛ.
Тада претворити да су подаци у слику доношењем га у УИ слику.
Дакле опет, то су сви различити типови објеката, различите врсте класа.
>> И онда ја онда могу поставити мој галлери.имаге једнака тим подацима.
И то је нека врста меса од тога да је заправо онда
у могућности да промените промените податке од-- слика од једног до другог.
Дакле опет, надам се сада Много конструката
учиниће мало више смисла.
Обратите пажњу да постоји нека узвичник овде.
У узвичник су суштини односи на опциони.
>> Оно што ја говорим је у основи да без чак провере
да видим да ли има података унутар ове опционо,
Идем да само напред и претпоставити да постоји и одмотати га.
Запамтите да смо користили аналогију врста пакета за опциони
и морамо да размотати пакет и извуците податке напоље.
Знак узвика снаге које заправо догодити.
>> Али знам да је ово јер сигурно сам проверио
да видим да ли слика подаци једнак са нулом, ја сам у ствари проверим
да видимо да ли да опциони био, у ствари, није успео.
Ако је је, у ствари, нису већ.
И тако сам сигуран да кад дођем до ово тачка са сигурношћу могу размотати те податке.
Такође би сте је видели у облик знаком питања.
Дакле, ако смо спустите се где сам треба да стварно анализирам податке.
>> Зато не треба одложити до такве врсте дугих имена.
Можете наћи у Аппле програмер сајт много
референци на све предмети и сви процеси
да заправо би ово било могуће.
Али приметите да је ово у суштини функција где сам га проћи неке податке.
И ја се вратим неку врсту података.
И морам да користим ово као појам у претворити га у овом нсдицтионари?
Која је опет, опционо нсдицтионари.
Које сам тада треба да проверите да ли постоји.
>> Тако да могу да користим да ако дозволите успешни једнаки обрађени,
онда знам да то опциони заправо садржи неке податке.
Или оно што сам урадио је била да Само претпостављају да ако постоји
било грешака да је то у ствари сигурно.
У реду, желим да се захвалим ви сви што сте дошли.
Знам да је било много, али то је само сат
да разговарамо о неким прилично напредне ствари.
И тако надам се да ћеш добити Могуће да преузмете сав код
и да боље, више исцрпан поглед на њу.
Тако некако убедите себе од свега у ствари које се дешава.
И желим да вам се захвалим све, опет, дошли.
И срећно са коначним пројектима.
Пријатан дан.