DANIEL Armendáriz: Dobrý den, všichni, vítejte na iOS pro vývoj aplikací s SWIFT. Já jsem Dan Armendariz. Jsem precepter počítače věda tady na škole inženýrství a aplikovaných věd. A rychle je vlastně druh o opravdu úhledné jazyka. A mám nějaké plány na dnešek. Takže během následující hodiny nebo tak jedeme se podívat na iOS samotného vývoje pomocí Xcode a vlastně vznikají jedny velmi jednoduché, velmi jednoduché aplikace. A při pohledu na způsob, jakým ve skutečnosti, aby tyto aplikace, a stavět je, a vlastně dát je na zařízení se systémem iOS. Některé z věcí, které nebudeme dívat na bude zahrnovat věci jako skutečně užívat aplikace a uvedení na App Store. Je tu spousta tutoriálů online, které Pomůže vám s tím aspekt. Ale také proto, že jako část CS50, získáte vstoupit do vývoje Apple Tým, CS50 je pro vývoj aplikací tým. Pokud jste to ještě neudělali, a jste spjata s firmou CS50, Já vám, abyste dělat, protože to je to, jak jste schopni vytvořit Některé programy v Xcode, stavět je, a dokonce dal je na některé z vašich zařízení se systémem iOS pokud jste skutečně fyzický iOS zařízení. Pokud nemáte fyzickou iOS Zařízení, které je více než v pořádku. Můžete si skutečně vyvíjet pro iOS. A má Xcode simulátor, který umožňuje vidět vaši žádost akce na vašem počítači. Ale je to trochu je užitečná věc skutečně hrát a komunikovat s aplikací na skutečném zařízení. Takže je tu pár požadavků vlastně dělat všechny tohoto vývoje. Jedním z nich je, že musíte mít Mac. Musí být spuštěn 10.9.4 nebo novější aby se do vývoje s SWIFT. Můžete použít dřívější Verze pro rozvoj s Objective C pro iOS a Mac. Ale já doporučit, a mnoho příklady, které uvidíme dnes, použijte 10.10 Yosemite. Takže pokud jste ještě upgrade, je to dobrá výmluva, aby tak učinily. Nyní Xcode 6.1 je nejnovější verze integrované vývojové prostředí že Apple poskytuje zdarma, které Zde si můžete stáhnout mimo App Store. A já jsem vám, abyste spustit také nejnovější verzi. Pokud jste náhodou být spuštěna dříve verze Xcode 5 a dále jen prostě nepodporují rychlé vůbec. A beta verze šesti, které byl propuštěn v létě, podporují rychlý, ale je tu Byl obrovský počet změny v jazyce, dost takže kód, který jste se podíváme, a že vás mohli najít na internetu nebude ve skutečnosti kompilovat správně v těchto dřívějších verzích Xcode. Takže znovu, pokud nechcete ještě ne má developer účet, Doporučuji vám jít do developer.apple.com. Zaregistrujte se vytvořit účet vývojáře, a připojit se k CS50 vývoj aplikací tým. To bude poskytovat vám příležitost kompilovat své aplikace a dát je na vašem zařízení. OK, tak se pojďme začít. Úplně první věc, budeme dělat se skutečně vytvořit velmi jednoduchý projekt v Xcode která Vám umožní podat žádost. Takže pokud ještě nemáte Xcode otevřené, jděte do toho a otevřete ji a vytvořit nový projekt. Speciální úvodní obrazovka se otevře a dá vám několik možností o tom, co to je, že chcete udělat. Stačí říct, že chcete vytvořit nový projekt, novou žádost. Toto okno vyskočí, za předpokladu, že používáte Xcode 6.1. Právě teď, a za Doba trvání tohoto semináře, budeme používat jediného pohledu aplikace, jen jakýsi základní aplikace aby se vaše nohy mokré. A můžete větvit na vlastní pěst odtamtud. Klepněte na tlačítko Další v tomto bodě. Teď je tu pár věcí že budete chtít vstoupit. Název produktu je název projektu. V tomto případě, já jsem jen bude to nazvat Seminar1 protože to je naše první příklad. Název organizace, ve tento případ je jen mé jméno. Můžete samozřejmě změnit na své vlastní jméno, nebo na CS50. Identifikátor organizace, pokud máte stalo se, že webové stránky vezměte doménové jméno zvrátit, com.yourname. a pak název produktu automaticky se zobrazí poté jako identifikátor svazku. Je zřejmé, že jazyk, který jsme bude používat pro dnešní den je rychlá. Můžete samozřejmě použít Objective C za to, ale dnes bude rychlá. A my teď říkat univerzální zařízení, tak že to funguje jak na iPad a iPhone. A necháme jádro Údaje nekontrolované zachovat projekt relativně Jednoduchý v současné době. Tak pojďme do toho a klepněte na tlačítko Další. A to mě zeptat kde chci uložit. Budu ji uložit do svého počítače nyní. Dobře, takže teď je to to, co bude stane, když ve skutečnosti otevřené Xcode. A všimněte si, že Úplně první věc, kterou uvidíte je to vykřičník, že říká, že ne podpis identity nalezen. Záměrně jsem to udělal na mém počítači a já jsem doufal, že budu moci skutečně opravit, proto, že chci, abyste viděli, jak to bude skutečně pracovat na vlastním stroji. Jděte do toho a klikněte na tlačítko Opravit problém. To se vás zeptá, zda máte Stávající vývojáře od společnosti Apple účet. To je místo, kde spojení CS50 vývoj aplikací tým Je důležité, aby vám nebude pouze app účet ale máte také schopnost podepsat aplikace a dát je na vašem zařízení se systémem iOS. To je ne-- kliknutí fix problém není nutné pokud jste jen tak budovat a rozvíjet místní úrovni, zcela v iOS simulátoru. Ale teď jdu rozvíjet a dát je na můj iPad, který bude schopen vysílat také. Tak jsem to chtěl skutečně dodat toto. A že to bude ptát mě na moji apple ID. Takže to bude tohle. A musím přinést My hesla, což je tady. Tak mi dej jen jeden sekundu najít to, a zkopírujte a vložte jej sem. Klepněte na tlačítko Přidat. Bude to a zeptejte se mě který tým Chci se připojit. Budu dělat školu inženýrství. Klepněte na tlačítko Připojit. Jejda, to je špatný. Pojďme to udělat jeden. Doufejme, že z nich bude pracovat. Tenhle stále nefunguje. Dochází nám z dobrých zde. OK, tohle by mělo fungovat. Teď blízko, že. A teď pojďme udělat školu strojírenství, klepněte na tlačítko vyberte. A teď doufám, že po pár vteřin can-- OK, Budu odvolat a požádat. Člověče, to bude fungovat. OK, zkusím jiný. Pojďme to udělat jeden tady. Živé ukázky mě nedaří. Možná budeme muset vrátit jen budova zcela na místě, ale to by bylo v pořádku v tomto případě. Tak zde, když je to skutečně pracovní, co budeme dělat, je jen vytvořit velmi jednoduchý Hello World aplikace. Tak tohle je Xcode. A pokud jste ho ještě neviděli ještě, to může být trochu zastrašující na prvním místě. Je tu spousta tabulí, je tu Mnoho doodads v různých oblastech. Ale jen si uvědomit, že je tu Opravdu několik hlavních komponent do tohoto vývojového prostředí. Zcela vlevo, jsou všechny soubory které se vztahují k programu nebo na konkrétní projekt. Budeme kliknutím kolem na některé z nich a my budeme zdůraznit nejvíce nejdůležitější v průběhu času. Na krajní pravice, my mít sadu atributů. A všechny tyto atributy, tam jsou různé tabule pro atributy. Tabule se bude měnit v závislosti na kontext hlavní obsah, který se stane, že je ve středu. Nyní prostřední může skutečně ukázat si různé věci, například váš kód sám. Nebo můžete skutečně have-- při kliknete na scénáři, který je, mimochodem, jen grafický reprezentace uživatele si interface pro vaši application-- pak podokně atributy na daleko zcela vpravo bude skutečně změní. Teď je tu pár dalších věci, které chci zdůraznit. Můžete trochu prozkoumat okolí v prostředí na vlastní pěst. Ale jedna z věcí, která byla velmi užitečná je zde tlačítko, v pravém horním rohu okna. Tam je to tlačítko, které vypadá na daleko nechal má odstavec následované dvěma kruhy a třídit ze dvou šipkami od sebe. Máte-li přepínat mezi standardní editor, který je zcela vlevo jedna, jedna že je vybrána ve výchozím nastavení, a dva kruhy překrývají navzájem, to, co skutečně dostat jsou dvojité pohled tabule. A to je ve skutečnosti bude užitečné pro nás kdy je třeba propojit položky v uživatelském rozhraní s kódem. A budeme hovořit o že za chvíli. Ale uvědomit, že pokud se dostanete ještě více skla, jako je tento, si můžete zjednodušit váš názor jen trochu kliknutím zpět na své jediné editoru. Zatím je to dobré. Takže v podstatě máme kód na vlevo, atributy na pravé straně, a co to je, že pracujeme zde v samém centru města. Tak tady jsem kliknul na hlavním scénáři. A storyboard, opět, je způsob, Xcode že můžete skutečně vytvořit uživatele interface pouze pomocí drag and drop techniky. A tak náš velmi První aplikace tohoto je přesně to, co budeme dělat. Chystáme se jít dolů do velmi daleko pravé dolní části obrazovky, která obsahuje různé uživatelských prvků které pak můžete kliknout a táhnout k vytvoření uživatelského rozhraní. Nyní jsou všechny z nich prvky se nazývají pohledy proto, že dodávají nějaký názor. K dispozici je pohled obraz, pro příklad, ve skutečnosti ukazují, obraz na uživatelském rozhraní. K dispozici je stolní pohled na ve skutečnosti ukazují tabulky. Tak dále a tak dále. K dispozici je široká škála pohledy, které si můžete vybrat zde. Tak právě pro teď jdeme hledat štítku. Stačí si jen procházet všechny seznamy, které tam je. Ale je tu vyhledávání bar na samém dně že usnadňuje identifikaci specifické pohledy, že jste skutečně Chcete přetáhnout do svého uživatelského rozhraní. Nalezeno svůj label. Chystám se táhnout to tady, přímo na mé ukázkové aplikace. Přímo tam v prostřední vypadá dobře. A já budu psát "Hello World!" Stiskněte klávesu Enter. Teď mám štítek. To nevypadá, že je to soustředěný zcela správně. Tak jsem se pokusit znovu domu IT. Naštěstí nabízí tyto vodítka, aby se věci mnohem jednodušší. Budu se snažit, aby to zkompilovat. Doufejme, že to bude skutečně pracovat. A pokud tomu tak není, za chvíli to bude ve skutečnosti vypadat na mém iPad. Je to přímo tady. Tady to je. OK, tak to je ono. Skončili jsme. Jsme vytvořili naše velmi první žádosti. Teď samozřejmě to nic nedělá. Je to jen označení. Neexistuje žádná souvislost mezi uživatelské rozhraní a kód. Takže pokud bychom skutečně chtěli k vytvoření tohoto spojení, Pokud bychom opravdu chtěli mít nějaký komunikace mezi prvky že existují na displej a kód, který nám umožňuje ovládat ty prvky, pak vlastně potřebujeme podívejte se na samotném kódu. Tak tohle je to, co se nazývá ViewController.swift. A, zejména pro několika prvních programů, to bude trochu Převážná část kódu, který enter-- bude v tomto dokumentu zde. Je tu spousta věcí že je tady tak daleko, že jo? K dispozici je import UI kit třída, přepsat, [? funk,?] všechny tyto různé věci. A to není úplně jasné, co to je, že všechny to znamená. Takže pojďme udělat krok zpět od z Xcode pro trochu a podívat se na samotný jazyk, rychlé. Tak se rychle, to bylo v návrh a vývoj u Apple pro asi čtyři let mého chápání. A je tu pár funkcí o tom, že jsou opravdu hezké. Za prvé, je to sestavují jazyk, stejně jako C. Takže musíte nejprve zkompilovat a spusťte jej Před můžete skutečně spustit kód, který vede. Ale je tu, na rozdíl od C, interaktivní výzvu, že můžete skutečně spustit a zadejte libovolné příkazy do. A velmi podobně jako konzole JavaScript, které můžete znát hned, to ve skutečnosti bude hodnotit ty, příkazy a poskytne vám výstup. A oni si dokonce vzít že na další úroveň a že jsem vytvořil něco tzv hřiště v Xcode které vám umožňují vizuálně pracovat s kódem. A budeme skutečně vidět několik příkladů z toho v jen trochu. Je založen na C. C je základem to, protože všechny kompilátory vytvořit kód z C a vytvořit objektový kód z ní. Ale je to opravdu akcie poměrně málo syntax. Bude to vypadat docela jinak. Bude tam nějaké podobnosti. Ale tam se bude poměrně málo rozdílů v porovnání s, řekněme, JavaScript nebo PHP. A budeme ukazovat tyto se jen na chvíli. Nyní jeden z největších věcí, o rychlý, že je to pěkné je to, že, zvláště v porovnání C, to znamená, že je v bezpečí. Všechno, co v něm je určen pro se velmi silně zadat. Ve skutečnosti je to skoro nepříjemné na první, když jste poprvé začít pracovat s rychlé, jak moc to prosazuje typy všude. Cokoliv, co je to řetězec musí zůstat řetězec. Je to velmi těžké, aby tak nějak převést ho nebo nutit do jiné formě. A opět, ukážeme příklady tohoto. Ale nakonec si uvědomit, že to znamená, aby vás chránit, a vy myslím kód, z shazovat nějakým hrozným způsobem, kdy Máte nějaký neodpovídající typu. A opět, s ním pracovat. Vzhledem k tomu, že bude frustrující nejprve jak jste se snaží přijít na to, proč zrovna začínáš tento neobvyklý chyba se zabývá typy. Ale to bude stát za to do konce. To se zabývají automatickým správa paměti, takže už se vám muset vypořádat s věcmi jako malloc a zdarma a všechny tyto druhy věcí. A to je také navržen pro všeobecnosti. Takže zatímco můžeme použít Xcode pro vytvořit iOS aplikace a aplikace Mac, můžeme také jen používat jako skriptovací jazyk. A tak ji můžeme použít třídění na místo PHP nebo místo Python skutečně rychle analyzovat a proces některé údaje, které máme v našem počítači. Má širokou škálu moderního rysy, Volitelné, proměnlivost, generik, uzávěry, a hodně z toho věci, může nebo nemusí rozpoznat. A je to jen trochu nešťastný část jazyka, že některé z nich trochu futuristický, moderní prvky, které jsou obsaženy v prvky jsou tak hluboce zakořeněný, že jsem vlastně bude muset naučit CS50.5 trochu. Musíme se naučit trochu více o některých prvků s cílem aby skutečně pochopili, co se děje o a tak, že se můžete podívat na kód a necítí úplně ztraceno. A uvidíte, co mám na mysli se tím, že jen na chvíli. OK, takže let's-- dost toho druh teoretického věci. Pojďme se podívat na naši vlastně První rychlý programem. Je to jeden řádek kódu. Linka 14 tady, ji říká, že tisk l n ahoj CS50. Takže je tu pár věcí, které je velmi odlišné o tom v porovnání na věci, které by vás mohly být používají k od C, např. Jedním z nich je, že neexistuje žádný intmain, není zahrnovat část, je tu nikdo z této dodatečné věci. Patří, stejně jako standardní I / O, stejně jako knihovny že skutečně poskytují standardní funkce jazyka, jsou automaticky zahrnuty jako Součástí standardní knihovny SWIFT a které jsou automaticky importovány. Nemusíte dělat že import ručně. Intmain neexistuje, protože hlavní vstupní bod pro kód je ve skutečnosti v začátek kódu. Takže jakýkoli kód, který máte od začátku bude skutečně proveden na začátku. Takže to opravdu výrazně zjednodušuje. Všimněte si také, že není středník. K dispozici je v tomto jazyce, žádné středníky. Dáte prohlášení na jednotlivé linky a pak další řádek představuje další prohlášení. Chcete-li, aby mulitiple prohlášení on-line, pak máte oddělte středníkem. Ale z větší části, pro dobrý styl, my jsme nikdy vidět středníky pro účely separace prohlášení SWIFT. Tak jak to vlastně funguje? Tak velmi podobně jako C my skutečně sestavit to. A tak můžeme udělat, že při použití rychlá c a pak 1.swift. A pak po pár minut to bude sestavovat a pak můžu běžet jednu položku. A než to bude jen říkat "Ahoj CS50." Super, takže tam jedeme. Tady je náš první Hello world. Pojďme se přesunout na číslo dvě. Nyní v tohle-- to změnilo lehce, protože zatímco normálně vás do-- ve skutečnosti vždy máte na sestavit rychlé aplikace předtím, než vlastně spustit to-- jeden ze skvělých funkcí které jsem se zmiňoval o předtím bylo, že rychlá může být skutečně použity na druhu z režimu pseudo-interpretační, tam je ve skutečnosti jako tlumočníka. Ale co to bude dělat, je tam je, ve skutečnosti, rychlá aplikace že můžete spustit. Tak například, pokud jste právě zadat zde rychlý, co se bude dít je to, že budete mít dotaz. A můžete zadat svůj Swift kód, tisk ahoj, a spusťte jej. A to bude skutečně print-- no, to se netisknou v tomto případě protože vytištěna na střed ven, která není vidět zde. Ale to je vlastně schopen fungovat. A tak v tomto případě, já jsem jen bude použít jako skript. A já si skutečně spustit tento kód tam. Takže jak jsem vlastně běžet to bude mírně lišit, ale uvidíte, že za chvíli. Nyní, v tomto případě to, co budeme udělat, je nejprve definovat proměnné. Tak to je, jak definovat proměnná v rychlé, je používáme nechat klíčové slovo, následoval názvem proměnné, a pak jsme se poskytnout nějaké inicializaci dat volitelně. Takže v tomto případě jsme definování konstanta s názvem název, a budeme používat, že v výstup naší tiskové linky na samém dně, ahoj jméno. Nyní si všimnout, že spíše než pomocí% s, můžeme zapouzdřit název této proměnná v / () a být schopen zřetězit v obsahu tohoto řetězec do tohoto řetězce. Nyní na rozdíl od C, řetězec je aktuální typ real SWIFT. A tak to sedí vedle ints a vedle zdvojnásobí velmi snadno a přirozeně srovnání na některé z druhé jazyky, které jsme viděli. Tak to by vlastně fungují stejně jako vy by se dalo očekávat. Můžu běžet 2.swift. A vidíme, že se jmenuji ve skutečnosti spojeny v "Ahoj Dane." OK, úžasné. Přesun na číslo tři. Teď to bylo trochu bílé lži, které jsem řekl, že způsob, jakým prohlašujeme proměnné bylo použít nechat klíčové slovo. Tolikrát, kolikrát, jak si možná můžete udělat chcete použít nechat, protože to, co dělá, že je to definuje konstantní. A to říká, rychlý, že to může optimalizaci rychlosti aplikace protože ví, že proměnná se nebude měnit. Tak hodnotí opatrně když budete používat proměnná pro účely jej změnit. A když budete vytvořit proměnnou jen držet některé údaje, a že je ne vlastně změní. Takže tento pojem neměnnosti, to není ve skutečnosti se změní, je důležitá, i když Pokud dolů, jak definovat proměnné. Tak tady jsme definovali jméno, nechal jméno, a v tomto případě je to konstanta, která je typu řetězec, a to se rovná Dan. A tak zatímco v předchozí verze, to infers-- a "to" Myslím swift-- Swift odvodí typ dat že jsme vstoupili do proměnné. V tomto případě můžeme být explicitní. Tak ať pak název této proměnné je název, pak tlustého střeva. A za dvojtečkou my specifikovat typ dat. Tak už je to INT název nebo Název řetězce nebo něco takového. Ale místo toho nechal štítek, my jsme určování, zda to je konstantní nebo variabilní, po níž následuje jméno, následuje typu Volitelně. Takže v tomto případě jsme definování Tento název je řetězec. Jsme říká Dan. A teď mám další proměnné, V tomto případě je to jen nálepka. Ale všimněte si, že to je předponou pomocí klíčového slova var. Klíčového slova var prostředky že tato proměnná může být změněn v pozdějším okamžiku čas, někde v kódu můžeme ji a ona skutečně změnit nebude nám žádnou konkrétní chybu. Můžeme to udělat standardní Zřetězení Operátor se zde pomocí na symbol plus skutečně přidat naše jméno do tohoto řetězce. A pak můžeme vytisknout jak jsme viděli před chvílí. Nyní řekněme, že vám Chcete vytvořit proměnnou ale nechcete jej inicializovat dosud. Nemáte ještě chtít dát všechna data v něm. No, musím říct rychlý jaký typ dat bude trvat, než si můžete vlastně definovat správně. Takže v tomto případě, kdy jsme definovaný proměnná nazývá stupeň musíme být výslovně o svého druhu, protože nelze dovodit, jen se dívá na inicializována údajů které poskytnete na něj. To nám dává chybu, pokud se Stačí zadat var stupeň, například, protože nemá žádný typ proto. Takže stupeň = 100. Tak, že 100 je číslo, to zapadá velmi dobře do toho. To bude i nadále fungovat. Můžeme vidět, jak pak jsme může zřetězit to v. Nyní můžete být pokušení, pokud jste skutečně chtěl zřetězit třída do jiného textového řetězce, do jiného řetězce, že byste právě používat stejně operátor zřetězení. A že by za normálních okolností byla pravda. Ale rychle nedovolí vám implicitně změnit typ dat. Takže v tomto případě, to linka, 25, se nezdaří proto, že třída je integer a ne řetězec. A tak je tu nesouladu nastavení typů. Takže musíte být explicitní, pokud Chcete-li změnit tato data, když chcete donutit to dat do jiného typu a říct, OK, já chci, aby se tento stupeň, což je celé číslo, a převést na řetězec. Tak jsem vzít kapitálu, s řetězec všechny typy, všimnete si, jsou kapitalizovány, Int, Double, String, tak dále a tak dále. Všechny z nich jsou kapitalizovány jen proto, aby se věci jednodušší. A budeme říkat vydělat String projít do it třídy. A to bude vytvářet řetězec z toho celé číslo. A pak se můžeme spojovat dva velmi pěkně. Jakékoliv dotazy týkající se této věci tak daleko? Dobře, pojďme pluh až na číslo čtyři. Nyní se pojďme bavit o nějaké vyspělejší struktury, jako jsou pole a smyčky. A na rozdíl od C, pole SWIFT nejsou reprezentovány ukazateli. Ukazatele v rychlé, i když existují, nazvaný jako nebezpečné ukazatele nebo nějaký podobný typ jako je tento, oni nejsou vystaveny na vás normálně. Tak se stává velmi obtížné pro vás manipulovat paměť přímo z vašeho počítače. Takže pole jsou jen datový typ. A oni odkazovat pomocí tohoto druhu Od nynějška standardní hranatou závorku notace že jste neviděli. Ale když jste skutečně chtějí definovat typ proměnné jako pole některých konkrétní typ, pak dát tento typ do hranatých závorek. Takže to, co říkám je, že Jsem vytvořit proměnnou s názvem stupně typu int pole. A já jsem nastavení, které se rovná některé INITIALIZED údaje, které se v tomto případě 100, 0, 90, 85, což je jen kolekce libovolných tříd zde. Nyní v tomto případě jsem mohl, pamatovat, odstraňte typ, a bylo by možné ji odvodit na základě údajů inicializována. Ale když jsem odstranil to a Potřeboval jsem ji nastavit později, pak bych se ujistit, že tam mám typ. Dobře, pojďme dál. Tak jsme can-- pole nám poskytnete odrůda metod prostřednictvím tohoto tečkové notace u vás jsou pravděpodobně už znají. Tak grades.count, například, nám říká přesně počet, z prvků, které jsou obsažené v tomto poli. Pokud se chcete přidat additional-- Nyní si všimnout, že se jedná o var a ne-- to je proměnná a není konstantní, což Znamená to, že mohu změnit obsah tohoto pole, mohu přidat objekty do toho. Ale nemůžu říct, jen známky a pak v hranatých závorkách čtyři, protože to bude mimo hranice chyby v tomto případě. Pokud se chci opravdu změnit velikost pole, Musím použít metodu dot append přidat něco na samém konci. I však může změnit Individuální indexy. Takže jsem mohl použít známky a pak hranaté závorky nula na manipulaci s touto první index a tak dále, jako byste normálně očekávat. A já si to samé vlastně přijímat data z že stejně. Teď je tu i trochu fantazie metoda jak to udělat, stupně a navíc rovná a pak další index, který bude append-- nebo ne jiný index-- ale další seznam, který se přiloží tento seznam na zadní straně stupňů. A stupně budou pak obsahují všechno. Ale to je tak nějak extra věc že jsem jen, že vám ukazuje pro zábavu. Teď je tu pro smyčce. A to je začátek, kde se věci začnou měnit trochu. Všimněte si, jak to pro smyčce je odlišný od pro smyčky v C. Teď jsem se na vědomí, že pro smyčky v Swift může bude vypadat jako na smyčky v C, ale je tu hodně víc užitečných konstruktů že v podstatě odstraňují nutnost mít k dispozici pro var i = 0 středník i je menší než určité délky, tak dále a tak dále, že jo? A tento konstrukt je jen jeden z nich. Pro index, index je nového proměnná, v tomto případě, v dosahu. A to, co říkám, je, že tam je rozmezí od 0 po celou cestu až do ale bez grades.count. Tak to dot dot méně než značka představuje rozsah hodnot od nuly celou cestu až do grades.count minus 1. K dispozici je samostatná subjekt, který existuje, což je dot dot dot, který by znamená, že chci rozsahu od nuly do jednotlivých stupňů počítat včetně. Ale v tomto případě, protože tyto pole jsou nulové index, jsme samozřejmě nechtějí jít do Maximální počet tříd. Mohu sečíst známky, jak by se mohlo očekávají, a výstup všechny tyto věci. OK, dál. Nyní se pojďme mluvit o funkcích. Aby bylo možné definovat funkce použít funk klíčové slovo. A opět, v Swift musíte buďte velmi opatrní s typy. Ty poskytují na to parametry definováním, například, název parametru a pak Colin, druh údajů že očekáváte, že parametr akceptovat. Takže v tomto případě máme Funkce tzv počet print stupeň. Přijímá proměnnou s názvem gradebook, nebo spíše parametr s názvem zadávání známek. A očekáváme, že zadávání známek být pole celých čísel. Pokud to gradebook je prázdný, budeme tisknout na jednu věc. V opačném případě budeme tisknout číslo známek, že to ve skutečnosti má. Nyní, pokud chceme, aby se vrátit nějakou hodnotu, pak způsob že jsme se změnit tato definice je skutečně používat toto klíčové slovo šipka nebo použít tento šipkami signifier. Tak tady budeme definovat funkce s názvem průměr. Chystáme se přijmout seznam čísel. A budeme se vrátit double, což bude doufejme je průměr tohoto pole. A aby k tomu, že v zájmu skutečně vypočítat tento průměr, budeme mít částku, a my se o Samozřejmě shrnout všechny objekty v tomto poli. Všimněte si, že je tu nová styl pro smyčky zde. Nemusíme být explicitní o iterace přes každé jednotlivé součásti, ale můžeme místo toho říci třídy a gradebook, význam že pro každý jednotlivý položka, která máme v tomto, stanoví, že položky v tomto proměnná s názvem stupeň. A já chci, aby něco udělat s ním. Takže budu shrnout všechny tyto údaje a skutečně vrátí dvojí rozdělení. Nyní si všimnout opět tady je Koncept celé číslo divize Swift. Pokud chcete zdvojnásobit divizi proto, že chcete desetinná místa, pak musíte být explicitní, Nejde jen o jedné straně, protože to nebude, aby vám donutit dat na obou stranách tohoto, musíte skutečně kurz obě strany do čtyřhry takže jste velmi výslovně o tom, zda že děláte dvojí rozdělení. Pojďme dál. Takže pokud bych opravdu chtěl accept-- takže v tomto konkrétním příkladu, je to stále příkaz linka na základě žádosti. A my začínáme vidět některé z omezení mladého jazyka v tom, že i když můžeme přístup k argumenty pomocí Tato process.arguments, to je ještě ne nutně nejčistší věc, kterou jsem kdy viděl. Ale v podstatě jsem povzbudit, abyste se trochu podívat na tento kód a snaží se přijít na to, co přesně se děje. V podstatě to, co se děje, je to, že vezmeme seznam argumentů a bylo donutit je do celá čísla, a pak jsme bude používat, že jako způsob, jak tisknout out průměr všech našich tříd. Dál. Teď je tu jiný typ data-- další typ dat spíše než pole tzv slovníky, které jsou velmi podobně jako hash tabulky nebo hash mapy a jsou také podobné PHP asociativní pole. A tak mají představu klíčů a hodnot. A oni jsou definovány také s Toto náměstí držák zápis, ale rozdíl je že slovníky mají uvnitř hranatých závorkách, dvojtečkou. A dvojtečka odděluje data typ, který je klíčem a hodnota. Takže v tomto případě budu vytvářet slovník přijmout nějaké známky. A to bude typu string: int, což znamená, že všechny klíče se bude řetězce, a všechny hodnoty těch, kteří klíče se bude celá čísla. Co to znamená, že můžu pak odkaz na konkrétní údaje, že chci používat ty klíče spíše než pomocí číselných indexů, jako já by se pro standardní pole. Nyní se podívejme, je tu jedna důležitá věc že i já chci zmínit o tento konkrétní sekvence kódu. A to je, že je tu jiný typ dat, nebo spíš tam je to Myšlenka dat, která je obsažené v Swift volal Volitelně. A co Volitelně znamená že vychází ze skutečnosti, že někdy nebudeme získat data, která skutečně očekáváte. A tak to, co mám na mysli, že je-- pojďme podívejte se na tomto pořadí kódu který opakuje přes všechny argumenty, které byly předány do tohoto kódu a snaží se je převést, se snaží rozdělit do různých řetězců, proto, že přijímá velmi konkrétní typ argumentu. A pak se to bude snažit donutit řetězce, které představují čísla na celá čísla, která jsou stupně, že jsem se pak může spočítat. Takže v podstatě jdu použití této funkce Rozdělit že existuje v rámci Swift standardní knihovna. Chystám se projít do ní řetězec, který chci rozdělit. A pak pomocí tohoto trochu funky syntaxe, což Nemyslím si, pokud budeme vědět, dostat, ale možná, my bude skutečně specifikovat přesný znak, který chceme rozdělit na adrese. Takže co to vlastně vypadá? Pojďme se podívat na vlastně spuštěním tohoto kódu. Tak například, řekněme, že mám kvíz a já mám 50 na to. A já mám PSETs a Mám sto na to. A já got-- je tu další kvíz a já jsem dostal 40 na to. I stiskněte klávesu Enter, a nakonec to, co se stane, je, že to, co to dělá je s ohledem na tyto parametry, štípací řetězce v těchto dvojtečky, uznává, že je tu Dva prvky každé z nich, a to je v podstatě sledování každého z nich. Tak jsem se v mém slovníku kvíz, jehož hodnota je reprezentován číslem 50, Mám pset, který má hodnotu 100, a kvíz ten, který má hodnotu 40. Pak se později v kódu I vlastně průměr všech těchto hodnot a vypsat všechny klíče že zvláštní slovník. Ale je to důležité takže si můžete všimnout co se děje, je to, že to, co jsme chci udělat, je, aby se tento řetězec a rozdělit ho na tohoto charakteru, které můžeme udělat znovu s tímto rozdělením Funkce používat tento druh zajímavé, syntax, že existuje zde. Právě teď předpokládat, že to je v pořádku. Podíváme se ještě na to jen na chvíli. Ale teď je tu zajímavý aspekt, že jsme vlastně chtějí, aby se pokusili změnit toto řetězec na celé číslo. Ale v jiných jazycích co se může stát je že bychom asi zkusit na to a buď vrátit nějaký Sentinel hodnota jako negativního nebo možná null, nebo něco takového. Nebo možná, že by jen způsobilo chybu. A museli bychom pak chytit tuto chybu a pokuste se udělat něco vychází z toho, že tato konverze na celé číslo selhal. To je místo, kde tato myšlenka o Volitelné přijde. Můžete si skutečně vytvořit datový typ, který je int otazník, např. To znamená, že toto celé číslo je, ve skutečnosti, volitelný. A co se stane, je, že to může obsahovat číslo, nebo nemusí. To může být ve skutečnosti tato další idea, zcela volal Nill. Ve kterém to znamená, že je tu žádná hodnota vůbec v tomto. Není to ani nula, tam prostě žádná hodnota. Neexistuje absolutně žádná hodnota zastoupena. A to je to, co tento řádek 71 se dělá. Je, že se říká, že já chtějí, aby se pokusili nastavit hodnotu, proměnná s názvem stupeň, se rovná přeměna tohoto řetězce do int. Tak jsem si vzal tento řetězec, Tato první komponenty, nebo spíše druhý komponenty, protože tato je nulový indexována, z toho Řetězec, který jsem se rozdělit. A já chci převést že na celé číslo. Ale to nemusí vždy probíhat obvykle, protože si představit co by se mohlo stát, kdyby, spíše než typ číslo, píšu samozřejmě jako asdf. Bude to nezdaří. Není to ve skutečnosti bude schopen konvertovat, že na celé číslo jak bych očekával. Takže spíše než výkop nějaký druh chyby, máme tuto myšlenku dobrovolné. A to znamená, že za použití tento otazník mohu říci, OK, to je možné, že jsem si vzít to, převede jej do int, a dát ho do proměnné, který bude také int. Pokud ano, pak to znamená že tato byla úspěšná a tato první část blok může pokračovat. V opačném případě se nezdařilo. Neexistuje žádná hodnota v grade-- nebo spíše není žádná hodnota v existujících, a já skutečně pokusit zpracovat tuto chybovou podmínku. Budeš vidět otazník po celou dobu v Swift a v příkladu kódu Swift. A ve skutečnosti nill operátor, je tento druh z otazníku, Volitelně část, bude pravděpodobně jedním ze složitějších věcí se trochu zabalit hlavu kolem jak jste vlastně s ním pracovat. To by mohl dělat teď smysl. A ve skutečnosti, když jsem byl psaní ukázkový kód pro to, Rozhodně jsem pochopil co se děje, ale přesto mě vystihuje překvapení každý tak často když bych zjistil, že některá data byla ve skutečnosti nil verze, volitelná verze z údajů, které jsem očekával. Takže jen uvědomit, že pokud vás mají rozšířená verze musíte rozbalit, že Data z tohoto boxu. Takže je to něco jako já- představit, že by vás mají krabici a obsahuje něco. A to, co je třeba udělat, je si položit otázku, Je možné, že tento box vlastně obsahuje data, která jsem hledal? Pokud ano, pak vytáhnout, že data ven a vložit do této proměnné existující. Pokud ne, pak jsem se jen proto, aby ignorovat obsah této kolonky dohromady proto, že doslova neobsahuje nic. Jakékoliv dotazy na to? OK, pojďme od toho druh příkazové řádky věci a začít hledat na některé technologie že Xcode poskytuje nám v podobě dětských hřišť. Takže je tu spousta schopnost zde Swift. A pokud jste otevření Xcode a to zeptá se vás, co chcete dělat, můžete otevřít hřiště a jen hrát kolem s množstvím různých struktur a aspekty jazyka ještě před zahájením dotykem iOS SDK nebo Mac SDK. Takže v tomto případě, řekněme, že jsem have-- Mám poměrně spiklenecký příklad tady, ale mějte se mnou, jak třídíme o práci prostřednictvím tohoto příkladu. Řekněme, že musíme udělat hodně exponentů s pevnou hodnotou, stejně jako víme, že budeme muset udělat hodně čtverečních pravomocí, například. Takže budeme mít nějakou hodnotu x, budeme ho náměstí, budeme trvat nějakou hodnotu y a budeme ji náměstí. Tak dále a tak dále. Teď bychom vlastně jen vytvořit Výkon 2 funkce pro to, že jo? A tak jsme si vytvořit sílu 2 funkce. Budeme akceptovat double. Budeme output-- nebo budeme vrátit dvojí typ. Budeme mít tento výsledek a pak na dvakrát to, co jsme vlastně brát výsledky, které se inicializuje na hodnotu jedna, a vynásobte ji x. Takže v podstatě máme tady x krát x. A tak jsem se pak mohou, jak bychom očekávat, vzít to, spustit síla 2, poskytnout k němu některé údaje, se mi líbí 2,0. A my jsme si k vidění 4,0 výsledky. Spusťte moc 2 na 3.2 a my dostat se na náš výsledek, 10.24. Zatím je to dobré, ne? Teď jsme na mysli, dobře, OK. Teď jsem skutečně potřebují, aby udělat hodně sil 3. Takže budu kopírovat vložit všechny tohoto kódu, změnit název funkce z síla od 2 do výkonu 3, a všechno budou stejné, s výjimkou pro tuto hodnotu tady, tento rozsah, 1 ... 2. Takže spíše než opakování Tato smyčka dvakrát, Chci zopakovat této smyčky třikrát. Tak jsem jen změnit tuto hodnotu z 1 až 3-- nebo spíše 2-3. Takže znovu, stejný kód, To je jediná změna. Teď to funguje také. Síla 3 pokud v nějakém hodnotu 2. Dostaneme 8. SO 2 kostičky. A 3.2 cubed je 32,768. A tak Zatím je to dobré, ne? Ale doufejme, že to je trochu bit červené vlajky pro vás v tom, že nyní máme některé duplikace kódu s výjimkou pro některé velmi malé přepnout z jednoho do druhého. Takže je tam nějaký způsob, jak bychom mohli být schopni zjednodušit tento problém, kde můžeme skutečně, v běhu, zjistit některé, nám poskytli nějakou funkci, která má právě moc, že ​​chceme. A je tu tento nápad uzávěry, což je opravdu, ale opravdu důležité v souvislosti s Swift, a v mnoha dalších jazycích. Ale asi bude vidět to používá spíše v Swift proto, že je vložený v jazyce než budete v jiných i moderní jazyky. A tak vznikla myšlenka uzávěru je to, že je my může mít funkci, která si klade za cíl je obecný funkce, obecný moc funkce. A tato funkce bude přijímat tento exponent, že jsme vlastně chcete vytvořit. Tak například, první instance, chtěli jsme moc 2. Tak jsme se poskytnout moc a poté v závorkách 2. A teď si všimnout toho, co to vlastně vrací. To trvá vstup primeru volal y, že je celé číslo, a vrací to šílené vypadající věc parentheses-- závorkách double a potom šipka double. Co to znamená, je, že jsem bude vracet funkci. Nejsem vracet jiný typ dat, já jsem ve skutečnosti vrací funkci že má tento parametr, který přijímá double jako vstup a výstupy fungují jako návratová hodnota. A jako výsledek, protože teď jsem volal Síla a předat nějaké hodnoty pro y, a já jsem vytvořit ten druhý function-- upozornění, že je tu další funkce, která je vytvářena uvnitř tohle-- co dělám je, že jsem se změnit že hodnoty, které člověk Hodnota, že jsem se změnil 2-3, teď jsem, že to y. A tento problém přetrvává. Takže pokaždé, když jsem volat moc z, v podstatě, co se stane je, že jsem si vrátil funkci. Všimněte si, že tady jsem definovaný nová proměnná s názvem náměstí. Nastavil jsem, že se rovná síle, pokud tuto hodnotu 2 k moci. A co to je zpět funkce. Takže náměstí, variabilní náměstí, je nyní funkce typu že má tohle-- pardon, přejděte nahoru málo bit-- která má tuto podpis, přijímat double a výstup double. Takže teď, co jsem udělal Je jsem v podstatě vytvořil funkci s názvem náměstí, které přijímá libovolnou hodnotu a náměstí to. Můžeme vidět, co se děje tady dole. Náměstí 3. například znamená, že jdu vzít hodnotu 3 a na druhou to. Tak, jak přesně to funguje? Když jsem se projít energii z 2--, když jsem projít 2 do této moci funkce, tato proměnná y je obydlený s touto hodnotou 2. A to je trochu koná v paměti. Že to něco jako se konala v stát někde v počítači, my to opravdu jedno, jak nebo tam, kde v tomto bodě. Ale já jsem se vrátit tuto funkci volal exponenciaci. A opět, to nezáleží to, co tato funkce se nazývá, Opravdu to tak dá nazvat cokoliv, že přijímá double a vrátí double, ale používá tuto hodnotu y uvnitř ní. Takže i když je to tato funkce, tato exponentiater funkce, která je byly vráceny zpět do mé proměnné, které jsem volal náměstí, to v něm obsažený tento pojem o tom, co bylo y. A to si pamatuje, že. Takže pokaždé, když říkám, že funkce, která je nyní nazýván náměstí, používá to. Ale to také znamená, že mohu vytvořte další proměnnou pomocí jiná síla. Tak jsem si vytvořit krychle proměnnou, pro příklad, poskytnout jí moc 3. Nyní kostka bude skutečně trvat i několik hodnota a krychle, která i vrátit. Takže můžeme vidět, že jsem si Hodnota 8 z toho. Ale tato hodnota y nemá změnit, protože jsou se konala v jakési nezávislých proměnných. Jsou nějak se konala v nezávislé prostory v paměti. Takže kostka bude mít vždy x k síle 3. A náměstí bude mít vždy x k síle 2, který Znamená to, že náměstí bude vždy čtverečních čísla, jak jsem očekávat. A kostka vždy kostičky čísla, jak jsem očekávat. To také znamená, že někdy můžete si nějaký funky syntaxe hledá kde budete mít sílu na velmi dolní části obrazovky zde, síla 5. A předáte do výsledku. Můžete volat, že funkce, která je byly vráceny s číslem 4. A tak to, co v podstatě to 4 je na páté silové, můžeme vidět výsledky zde. Se mnou tak daleko? Takže tento nápad se nazývá uzávěr, protože to, co jsme v podstatě dělat je, že jsme už zapouzdření některá data into-- sort obvodových tato data do funkce, a my jsme budou moci znovu použít tuto funkci. Nyní je tato syntaxe však může ve skutečnosti být zjednodušena, velké množství. A je tu spousta možností V Swift tohoto zjednodušení. A to je to, co druh ty následné vlastně podívat. Takže v 7b jsme například tento přesně stejný kód. Ale teď spíše než vlastně definovat funkci Uvnitř této moci fungují a dát mu jméno, a pak se vrátit název této funkce, která pak se používá jako součást toto uzavření, místo toho jsme jen tak to zjednodušit. Nepotřebujeme tato funkce být jmenován. Tak tohle je koncept anonymní funkce, kde můžeme tedy přijmout jako vstup, v závorce tady, proměnná x, která je typu double. Chystáme se vrátit typu double. A pak klíčové slovo, n, je počátek této funkce. Takže si všimnout, že toto všechno je uvnitř složených závorek a my jsme definování fungují zde anonymní. Jen jednodušší způsob, jak definovat přesně to samé. OK? Ale vydrž, vlastně Swift nám umožňuje jít dál, a zjednodušit ještě víc, protože ve skutečnosti nemáme jedno, že tento parametr je pojmenovaný žádnou konkrétní věc. To může skutečně nazvat cokoliv a stále ještě můžeme použít tento první parametr. Takže ve skutečnosti je to zvláštní typ dat v anonymních funkcí, Tam je to zvláštní název proměnné v anonymních funkcí které začínají znak dolaru a představují čísla parametrů, nula indexována, pro tuto funkci. Takže je tu pár věcí děje. Tady budu vracet, a pak se složená závorka představuje funkci, že jo? Všimněte si, že nemám definovali parametrů typy nebo návratový typ. To může ve skutečnosti být odvozeny vzhledem k podpisu této původní funkci. Takže můžeme eliminovat že jako možnost. Ale také mohu použít znak dolaru nulový reprezentovat tuto první parametr, který je prošel do této anonymní funkce. Takže jej ještě více zjednoduší. OK? Zatím je to dobré? Teď je to to type-- se vám zapamatovat si tuto znak dolaru nulu že jsme viděli v tomto složenou závorkou že jsme viděli jen malou chvíli Před v tomto Swift šesti příklad? Bylo to tady. Všimněte si, že je to přesně to, co se díváme, je to, že jsme prošli do této funkce Rozdělit anonymní funkce, která kontroluje první parametr aby zjistil, jestli se rovná symbol tlustého střeva. A to je přesně to, co je děje, je to, že všechny jsme doing-- návrat Klíčové slovo je naznačen V tomto case-- vracíme tato hodnota, kam máme porovnání První parametr proti tato postava tlustého střeva. A tak, aby trochu demystifikuje toto. A vy budete vidět tento konstrukt pozemek v Swift syntaxi, tak se mějte na mysli, když jste přičemž se podívat na tohle. Nyní se můžeme dostat pryč příčky trochu a jít opravdu fantazie, která ukazuje ještě některé další SWIFT moci. Dalo by se dokonce vidět některé z nich ve vzorku kódy. Takže to je důvod, proč jdu ukázat vám to. V podstatě to, co můžeme udělat, je to, že jako první ze všech, to bylo docela se zbytečně pro mě implementovat celou tu moc kód, protože při importu Darwin knihovna, ve skutečnosti obsahuje funkci volal pow, že to udělá za vás. Takže můžeme zjednodušit ho ještě víc a máme Power Up funkce už jen být nádherný jednu vložku, kde jsme právě vrácení tohoto anonymní funkce, která přijímá dolaru 0, protože jeho báze a Y jako jeho exponent. Ale můžeme opravdu, opravdu efektní, když jsme Uvědomuji si, že Swift má hodně síly pod kapotou. Mnoho z operátorů, který jsme se zabývali, a znaky a symboly rozdělení a Všechny tyto věci, které byste normálně pracovat s s datovými typy v programovacím jazyce, jsou vlastně rozšiřitelné v Swift. Takže to, co to znamená, že jsme v Můžete definovat vlastní operátory. Takže teď jsem unavený psaní v tom všem pow a pak závorky a poté báze. Nechci to udělat. Vlastně jsem chtěl mít subjekt, který mi umožňuje dělat to. Takže můžu říct, rychlý, že chci vytvořit operátora, hvězda star-- mimochodem nemohu používat karát protože karát je operátor, který dělá něco úplně jiného. Takže nechci řadit z srazí s tím. A tak to, co vidíte v různých jazyků, včetně Pythonu, je jako provozovatel star star reprezentovat exponenty. Tak to je jediný důvod, proč Proto jsem udělal. A to bude operátor typu infix. A musím poskytovat k němu nějaké informace o přednosti tohoto Operátor tak je to vlevo asociativní. Je to jako poměrně ve srovnání s vysokou přednost k sumačního nebo násobení. Je to vyšší přednost než všechny ty. Tak dále a tak dále. A pak jsem se definovat funkce, které skutečně diktuje, co to dělá operátor. Takže za předpokladu, že mám doleva straně a pravá strana, což by bylo třeba lepší název proměnné za to. Levá strana a pravá strana. Pak jsem si vzít tuto pravomoc levou stranu na pravé straně a vrátí tuto hodnotu. Takže teď je to super sladká. Vše, co musíte udělat, je 2 star star 3 a který je 2 až třetí mocninou, a dostaneme hodnotu 8. 2 star 10 je 2 10. moc, dostaneme 1024. Takže teď naše síla funkce, což je opět jiná, proto, že celá myšlenka této bylo, že máme jednu funkci, která má vždy nějakou hodnotu a násobí to-- nebo spíše má exponent ke stejným výkonem. Takže teď je to ještě jednodušší. Takže teď je to jen dolar Přihlašte 0 Hvězda y. Nemáme ani nadále používat, pow. OK, kdo prohrál? Děláme v pořádku? Jakékoliv dotazy týkající se této věci? Jo? Diváků: Když you-- [neslyšitelné] funk moc y double. Takže, když se vracíte funkci. DANIEL Armendariz: Funk moc y double. Ach jo, já nevím co čísla y jsou. Omlouvám se za to. Diváků: Proč se vrací Funkce [neslyšitelné] skříň. Není dolar nula star hvězda y [neslyšitelné] zjistíte, že operátor s tím vrácení double [neslyšitelné] zdvojnásobí? DANIEL Armendariz: Tak pojďme mi odpovědět na vaši otázku jak jsem to pochopil, a můžete mi říct, když jsem se pochopit vaši otázku. Takže tento konstrukt, složená závorka znak dolaru nula star star y, je funkce. A to přijímá parametr, který je zastoupená tímto znakem dolaru nula. Návratnost klíčové slovo je naznačen v tomto velmi krátký, anonymní funkce syntax. Což znamená, že v podstatě co to říká je to, že jsem vymezení function-- a pak budu Jen říkám something-- kde mám nějakou hodnotu y. Mám y, což je dvakrát. A Vracím double. A já mám v tomto přiznání y- líto, Neměl jsem nazval y- x. Ach, ach jo, ach jo. X-- nope-- star star y. Tak to je jen zjednodušená verze tohoto. A tak důvod, proč mám dolar znamení nula je, že použití této kabiny Znamená to, že už nemám typu prašanu, nebo už ne dělat Musím něco udělat jako 3 star star 2. Mohu jen mít jeden Funkce s názvem náměstí že se bude vždy nějaká hodnota jako vstup a vlastně vrátit náměstí to. Takže celá účelem uzavření je jen trochu zapouzdřit skutečnost že jsem se vždycky chtěl y používat kdykoli Říkám, že funkce jako síla Při užívání tohoto exponent. Takže vracet se pak, funkce, která přijímá dvojitý, což je základní, a vrátí výsledek tohoto exponentu je zde tlačítko. A to je hlavní rozdíl. Tam byl jen trochu vzkvétat. To není nic jiného ve srovnání s předchozími příklady, ale to bylo jen trochu vzkvétat můžeme skutečně vytvořit operátora v Swift a vlastně dělat věci s tím, což je druh super věc. Už jsem odpověď na vaši otázku? Sladké. Cokoliv jiného, ​​než jsme dál? OK. Nyní tento druh prosí Otázkou je, that-- dobře v pořádku, Nyní máme možnost pro funkce, které mají být vráceny. Můžeme také projít funkce, jako jsou údaje o nebo jako parametry dalších funkcí? A ve skutečnosti můžeme. Tak řekněme, že máme všechny se stejným kódem. Máme druhou proměnnou že se náměstí tento kód. A máme proměnnou krychle že bude krychle některá data. A my vlastně chceme použít pro široký rozsah čísel. Takže to, co bychom mohli být v pokušení dělat, samozřejmě, což je jistě platný, je iteraci tohoto seznamu čísel a aplikovat mé funkce náměstí a krychle a získat dva nové seznamy jsou výsledky že jsou to originální seznam čtvercový a kostičky, resp. Dokonale přijatelné. Ale co je to věc, která zde vidíme, je, že máme, znovu, duplikace našeho kódu. A je tu možná příležitost Pro nás zjednodušit to trochu. Co kdyby tam byl způsob, jak pro nás ve skutečnosti vždy iteraci přes nějaký seznam a jen předat tento kouzelný funkci proměnnou, která představuje funkci že chceme použít na každou jednotlivou položku v tomto seznamu. Tím se pojetí toho, co se nazývají vyššího řádu funkce. A to je v podstatě to, co to je, je to, že můžeme vytvořit funkci. A v tomto případě se to jmenuje mapper, jen aby to jméno, jen mapování nad každým jediná položka v seznamu. Kde vezmu seznam a beru funkci. A to funkce, samozřejmě, má určitý podpis. Přijímá jako dvojnásobek parametru a to bude výstup je double. A celý výsledek tato funkce bude bude nový seznam, který je typu double. OK? A co budu dělat je-li použít tuto funkci f ke každému prvku v mém seznamu. A reply-- a raději vrátit tento nový Seznam v důsledku, který je opravdu cool. Teď jsem si projít funkce kolem. A tato myšlenka vyššího řádu Funkce je opravdu důležité. A to je opravdu jen mapper Implementace chudáka z funkce, která je postavena do Swift s názvem mapy. A to dělá přesně to, možná i trochu lepší. To je tak nějak obecný, zjednodušená verze, nám umožňuje vidět pojetí, které zde platí. Nyní se podívejte na to, jak jsem může skutečně použít můj náměstí a moje kostka funkce Do tohoto seznamu čísel. Jsem běžet můj mapper. I poskytnout k němu můj seznam čísel. I poskytnout jí na funkce, která se děje použije na každý z těchto indexů. A to bude Výstup jako výsledek. A já se dostat vidět, že jsem se na druhou a kostičky Moje čísla jako výsledek. A samozřejmě bude trvat mapper nějaký druh anonymní funkce. Dokonce můžeme vidět, že jsem vytvořil Nová anonymní funkce, která jen trvá nějaký parametr a rozděluje ji 2. A můžeme vidět, že jsem ve skutečnosti, dělená můj seznam o 2 místo. Pohodě? Zatím je to dobré? Dobře, teď pojďme vrátit se k této myšlence. Pojďme realizaci tohoto zpátky v kontextu zadávání známek. A když to udělám, můžeme vidět, že můžu použít širokou škálu těchto options-- nebo celá řada z nich vyššího řádu funkce skutečně zjednodušit své schopnosti dělat Různé věci na seznamu čísel. Tak například, když jsem se seznam čísel, jeden z vyššího řádu funkce že existuje, se nazývá snížit. Co snížit dělá spíše než na mapě, se snižuje bude trvat dva prvky v seznamu, bude trvat nějakou funkci, která porovnává dva prvky seznam, a to pak bude druh output-- Výstup z této funkce bude další prvek, který pak v porovnání s ostatními. Takže byste mohli použít k vlastně součet čísel ve vašem seznamu. Například, pokud jste měli seznam 1, 2, 3, 4, 5, budete mít prvních prvků, 1 a 2. Můžete se na něj vztahují sčítání funkce, která vezme tyto dva prvky a vyplivne jeden z těchto prvků, což by hodnota 3. Pak jsme se tuto hodnotu 3 s další prvek seznamu, shrnul ty dva, a pak dál se stanoví seznam. Jsme snížení Seznam na jednu hodnotu. A to jen tak se stane že symbol plus je operátor, stejně jako jsme právě viděli. Tento operátor je ve skutečnosti, že funkce má právě tento seznam, které jsme bude chtít, raději těmto vlastnostem že bychom chtěli. Tak jsem povzbudit, abyste podívejte se na tohle. Chci, aby tak nějak pohybu Na některých z tohoto kodexu takže vlastně můžeme podívat na některé skutečný, reálný, pravdivý Swift v Xcode, v iOS vývoji. Ale podívejte se na to a uvidíme, jestli můžete analyzovat skrze to, co se děje s některými z těchto vyšších řádů funkce včetně filtru, snížit, a budete dokonce viz někde tady na mapě stejně. Je to přímo tady. Tam, kde to bude trvat sekvenci známek a to bude ve skutečnosti Pro je pomocí přepínače konstrukt, které můžete poznat z C, ale ve skutečnosti je to mnohem víc silnější než spínače konstruktu že máme v C. A budeme platit, že pro každý prvek v seznamu a skutečně poskytovat stupeň písmeno každého z těchto tříd s využitím všech těchto pojmů že jsme právě mluvili předtím. Nyní vyhnout jen za minuta a hovoří o structs. A tak structs jsou čekat v C, které jsme byli schopni definovat nový typ dat. Struktury existují uvnitř Swift. A tak se mnoho dalších konstruktů tzv výčtové typy a třídy, které opravdu tento nápad úplně jiný level. A v podstatě je to jen způsob, jak definování nového typu dat. Takže pokud jste get-- když přijdete po třídě nebo structs nebo výčtových typů, nenechte se zmást tím. Je to jen způsob, jak definovat nějaká nová konkrétní typ dat. A to je opravdu důležité při mluvíme o iOS pro vývoj aplikací proto, že vše, co existuje v rámci aplikace iOS je v podstatě předmětem nějakého druhu. A objekt je v podstatě třída nebo enum nebo struct. Takže v tomto případě, že jsem definovat nový typ dat že volám hodnocení že je některé vlastnosti, včetně jméno a posloupnost stupňů. Takže jeden typ hodnocení že bych mohl mít na mysli by kvízy, například. Já bych chtěl mít hodnocení, které bylo kvíz a který měl různé jakosti spojená s tím, pro kvíz jedna, kvíz dva, tak dále a tak dále. Nebo bych mohl mít jiný typ posouzení pro problémové sady. A můžu dělat věci. Já si skutečně mít Funkce v rámci tohoto typu z údajů, které jsou nyní volal metody. Takže pokud jste někdy vidět metoda slovo, je to opravdu je jen funkce, které se vztahují k velmi konkrétní třídy, nebo velmi specifický typ dat. To nám umožňuje upravovat data uvnitř. Takže jinými slovy, pokud chci, aby Přidání třídy do své analýzy, pak vše, co potřebujete udělat, je, aby připojit skóre, který byl vstup k této funkci se můj vnitřní majetek. Je tu další čistý konstrukt zde v Swift, což je to dot dot dot operátor, což znamená, že bodové hodnocení nyní přijímat libovolný počet celých čísel. A skóre bude pole celých čísel, která byly předány do mé funkce, která Znamená to, že můžu dělat věci, jako je toto. Můžu si přidat stupně a jen poskytovat libovolné množství celých čísel do něj a ve skutečnosti být pole z těchto hodnot v mém funkce nebo ve svém způsobu, jako je tomu. Teď je to důležité, protože vše v Xcode, vše v iOS, je ve skutečnosti objekt. Takže mějte na paměti, že Když jsme bust otevřené Xcode a přeskočte za iOS verze dvě a tři a vlastně jít na verzi čtyři. A opět, bude to vše zveřejněny na semináře stránce. iOS čtyři je trochu plnohodnotné realizace velmi základní aplikace. A co tato aplikace dělá, je to načte UI, který vypadá takto. Opět platí, že pokud klikneme na scénáři můžeme vidět, že to je to, co to vypadá. To je UI. Má titul na samém vrcholu. Já jsem to nazval web galerie. Uprostřed je prvek volal view UI image. A na konci je tu Panel nástrojů s jedním tlačítkem, které Má elastické mezery, které ji umožňují, aby centrum uprostřed tohoto panelu. A co se stane, je, že když to zatížení stáhne JSON soubor, který je obsažené na serveru jinde, analyzuje, že JSON soubor, a soubor JSON vypadá trochu jako je tento. Soubor JSON vypadá takto. Tady to je. Má název alba a má řadu fotografií. Každá z těchto fotek mají jméno a také URL sami, které reprezentují jpeg verze tohoto jednotlivých fotografií. Takže to, co se stalo, je, že když tento program zatížení, stáhne soubor JSON, analyzuje to, klade to vše v ekvivalent pole v iOS app vývoj, který je nsarray. A pak jsem si poté načíst tato data do aplikace a nahrát ji na mé obrazovce. Tam je obraz, který byl vložen tlačítkem na samém dně. Mám-li na tlačítko Get Následující obrázek, pak táhne, že obraz z internetu a nahrazuje tento obraz v pohledu UI obrazu. Takže si můžete stáhnout a vlastně podívejte se na to na vašem počítači. A stavět to a vlastně zkompilovat do vašeho zařízení. Ale v podstatě proces byl to, vytvořte storyboard-- nebo spíše ne create-- ale vybrat scénář. A vlastně we'll-- pokud nechcete mind-- budeme trvat jen několik sekund skutečně ukázat, jak se to stalo. Jen tak, jak můžeme vlastně dosažení tohoto cíle je vyrobena trochu víc zřejmé. Jednotlivý aplikace, já jsem zavolá tento seminář čtyři zastupující tento konkrétní číslo. Uložte jej na ploše. OK, bude kliknout na scénáři. A co budu dělat je najít můj názor obrazu, přetáhněte ji na své uživatelské interface a centrum za to. Teď už jen stačí centrování to bohužel se nebude dělat spoustu, až na obrazovku že je tato přesná velikost. Takže se můžeme přesvědčit, že Kliknutím na tohoto dvojího kruhu věc, svrhnout tuto pop up menu zde a měnící se k náhledu, kde budeme vlastně šanci na náhled, jak Tím se vlastně podívejte se na jiných zařízeních. Jak můžeme vidět, nemáme ani vidět na tomto konkrétním případě. Takže budu zavřít to nyní. A budu volit Tato ikona se na velmi spodní části obrazovky. To říká, že Vyřešit Auto problémy rozložení. Je nám líto, je to odříznout na dně. Ale když kliknu na to, co jsem si to pop up-- jít pryč. To, co jsem si je to pop up, který mi umožňuje přidat chybějící omezení. A tím, že dělá to tak pak tak nějak zamknout do střední části obrazovka jako já by se dalo očekávat. Nyní s cílem, aby si toto tlačítko na vrch, musím jít do editoru. Přejít na vložit do a klikněte na tlačítko Navigation Controller. Co to udělá, je, že se přidá Celá tato další složka k ní, ale ve skutečnosti bude odkaz zpátky ke své původní UI. A detaily, opět, my ne Opravdu je třeba se starat o právě teď. Ale já to chci mít Panel nástrojů na samém dně. Tak jsem to zkontrolovat ukazuje Toolbar. A to poskytuje v rámci mého názoru, který je nyní někde jinde, můžeme vidět, že to souvisí tady. To nyní nabízí panel nástrojů ve spodní části svého uživatelského rozhraní. Takže teď, spíše než výběr view image, najdu štítek, nebo spíše toolbar-- podívejme se, kde to je? Jak se jmenuje? Položka button-- bar-- item-- sorry-- bar tlačítko položka. Plop, že tam a aplikovat pár o flexibilní prostory na obou stranách skutečně centra to. Takže teď jsem vytvořil můj UI, v podstatě. A mohu dát mu jméno, pod dvojitým kliknutím na samém vrcholu tady a říkat webové galerie a tak dále. Nyní opět se jedná o prvky, které existují samy o sobě. A musím se připojit je do svého kódu, který Můžu udělat opět přináší up tohoto dvojího ikony kruh, přepnutí z náhledu. Což, mimochodem, nyní můžeme vidět, je pěkně ve středu a bude vypadat dobře na různých zařízeních. Přepněte do automatického režimu, který bude vyvolejte ViewController kód. A teď tato část je důležitá. K tomu, aby vám umožní připojit tyto dva prvky, kód k UI, vyberte položku, která se chcete připojit. Takže v tomto případě jsme skutečně chtějí kódovat změnit obrázek, který je obsažen v rámci tohoto pohledu UI obrazu. Takže pokud ovládáte na tlačítko od view image a táhnout, zjistíte, že vám trochu bar, když necháte odejít všechno to pop up dojde. A to říká, že budeme Vytvoření připojení. A odtud chci, aby to název, něco jako galerie. Stiskněte klávesu Enter. A to vlastně poskytuje proměnná s názvem galerie že jsem se pak mohou odkazovat v mém kódu obrázek změnit, například. Tak jak to, že kód vlastně vypadat? No zase, já nechci tráví příliš mnoho času na to. A já Doporučujeme vám si ji stáhnout a podívat se. Ale jeden z nejvíce Důležitým aspektem je kód že vlastně načte obrázek. Takže v tomto případě chci aby se v rámci mých fotografií pole, které je obsaženo v mé třídě. Chci definovat název a adresu URL která byla analyzována z tohoto JSON. Vlastně požádat zařízení, aby si URL, načíst URL z toho, a pak načíst data z Obsah této URL. Pak převést tyto údaje do obrázku průchodem do obrazu UI. Takže znovu, to všechno jsou různé druhy objektů, různých typů tříd. A pak jsem si pak nastavit my gallery.image rovná dat. A to je druh masa z toho, že ve skutečnosti je pak schopný změnit změnit data from-- obraz od jednoho k druhému. Takže znovu, doufám, že teď spousta konstruktů bude trochu větší smysl. Všimněte si, že tam je nějaký vykřičníky zde. V vykřičníky jsou v podstatě souvisí s Volitelně. To, co jsem v podstatě říct, že i bez kontroly aby zjistil, jestli tam dat v tento volitelný, Chystám se jít dopředu a převzít že je zde a rozbalit jej. Pamatujte si, že jsme použili analogii druh balíčku pro Volitelně a musíme rozbalit Balík a vytáhnout data ven. Vykřičník síly, které se ve skutečnosti stalo. Ale já vím, že to je bezpečné, protože jsem zkontroloval aby zjistil, jestli obrazových dat se rovná na nulu, já jsem vlastně zkontrolovat a uvidíte, zda volitelná byl, ve skutečnosti, se nezdařilo. V případě, že byl ve skutečnosti již selhal. A tak jsem si jistý, že jakmile se dostanu k tomu bod můžu bezpečně rozbalit, že data. Možná vidět také forma otazník. Pokud tedy přejděte dolů, kde jsem je třeba skutečně analyzovat data. Takže nenechte se odradit Tyto druh dlouhých jmen. Najdete v Apple developer site hodně odkazů na všechno objektů a všechny procesy že ve skutečnosti, aby to bylo možné. Ale Všimněte si, že se jedná v podstatě funkce, kde bych předat některá data. A já se vrátím nějaké údaje. A musím použít jako klíčové slovo do převést jej do této nsdictionary? Což je opět, volitelný nsdictionary. Což jsem pak je třeba, aby zkontrolujte, zda existuje. Tak jsem se ho použít, pokud nechal úspěšných rovná analyzovat, pak vím, že na přání ve skutečnosti obsahuje některé údaje. Nebo to, co tu dělal jsem byl na jen předpokládat, že v případě, že žádné chyby, že je ve skutečnosti v bezpečí. Dobře, chci poděkovat vám všem moc děkuji za příchod. Vím, že to bylo hodně, ale to bylo jen hodina mluvit o nějaké pěkný moderní věci. A tak doufám, že budete mít možnost stáhnout všechny kód a vzít lepší, důkladný pohled na to. Druh přesvědčit sami ze všech ty věci, co se děje. A chci vám poděkovat všichni, opět přišel. A hodně štěstí s vašimi závěrečných prací. Mají velký den.