>> DANIEL Armendáriz: Dobrý deň, všetci, vitajte na iOS pre vývoj aplikácií
s SWIFT.
Ja som Dan Armendariz.
Som precepter počítača veda tu na škole
inžinierstvo a aplikovaných vied.
A rýchlo je vlastne druh o naozaj úhľadné jazyka.
A mám nejaké plány na dnešok.
Takže počas nasledujúcej hodiny alebo tak ideme sa pozrieť na iOS samotného vývoja
pomocou Xcode a vlastne vznikajú jedny veľmi jednoduché, veľmi jednoduché aplikácie.
A pri pohľade na spôsob, akým v skutočnosti, aby tieto aplikácie,
a stavať je, a vlastne dať je na zariadení so systémom iOS.
Niektoré z vecí, ktoré nebudeme pozerať na
bude zahŕňať veci ako skutočne užívať aplikácie
a uvedenie na App Store.
Je tu veľa tutoriálov online, ktoré Pomôže vám s tým aspekt.
Ale tiež preto, že ako časť CS50, získate
vstúpiť do vývoja Apple Tím, CS50 je pre vývoj aplikácií tím.
Ak ste to ešte neurobili, a ste spätá s firmou CS50,
Ja vám, aby ste robiť, pretože to
je to, ako ste schopní vytvoriť Niektoré programy v Xcode,
stavať je, a dokonca dal je na niektoré z vašich zariadení so systémom iOS
ak ste skutočne fyzický iOS zariadenia.
Ak nemáte fyzickú iOS Zariadenie, ktoré je viac ako v poriadku.
Môžete si skutočne vyvíjať pre iOS.
A má Xcode simulátor, ktorý umožňuje
vidieť vašu žiadosť akcie na vašom počítači.
Ale je to trochu je užitočná vec skutočne hrať a komunikovať
s aplikáciou na skutočnom zariadení.
Takže je tu pár požiadaviek vlastne robiť všetky tohto vývoja.
Jedným z nich je, že musíte mať Mac.
Musí byť spustený 10.9.4 alebo novší aby sa do vývoja s SWIFT.
>> Môžete použiť skoršie Verzia pre rozvoj
s Objective C pre iOS a Mac.
Ale ja odporučiť, a mnoho príklady, ktoré uvidíme dnes,
použite 10.10 Yosemite.
Takže ak ste ešte upgrade, je to dobrá výhovorka, aby tak urobili.
Teraz Xcode 6.1 je najnovšia verzia integrované vývojové prostredie
že Apple poskytuje zadarmo, ktoré Tu si môžete stiahnuť mimo App Store.
A ja som vám, aby ste spustiť tiež najnovšiu verziu.
>> Ak ste náhodou byť spustená skôr verzia Xcode 5 a ďalej len
jednoducho nepodporujú rýchle vôbec.
A beta verzie šiestich, ktoré bol prepustený v lete,
podporujú rýchly, ale je tu Bol obrovský počet
zmeny v jazyku, dosť takže kód, ktorý ste
sa pozrieme, a že vás mohli nájsť na internete
nebude v skutočnosti kompilovat správne v týchto skorších verziách Xcode.
Takže znovu, ak nechcete ešte nie má developer účet,
Odporúčam vám ísť do developer.apple.com.
Zaregistrujte sa vytvoriť účet vývojárov, a pripojiť sa k CS50 vývoj aplikácií tím.
To bude poskytovať vám príležitosť kompilovať svoje aplikácie
a dať ich na vašom zariadení.
OK, tak sa poďme začať.
Úplne prvá vec, budeme robiť sa
skutočne vytvoriť veľmi jednoduchý projekt v Xcode
ktorá Vám umožní podať žiadosť.
>> Takže ak ešte nemáte Xcode otvorené, choďte do toho a otvorte ju
a vytvoriť nový projekt.
Špeciálne úvodná obrazovka sa otvorí a dá vám
niekoľko možností o tom, čo to je, že chcete urobiť.
Stačí povedať, že chcete vytvoriť nový projekt, novú žiadosť.
Toto okno vyskočí, za predpokladu, že používate Xcode 6.1.
Práve teraz, a za Doba trvania tohto seminára,
budeme používať jediného pohľadu aplikácie, len
akýsi základné aplikácie aby sa vaše nohy mokré.
A môžete vetviť na vlastnú päsť odtiaľ.
>> Kliknite na tlačidlo Ďalej v tomto bode.
Teraz je tu pár vecí že budete chcieť vstúpiť.
Názov produktu je názov projektu.
V tomto prípade, ja som len bude to nazvať Seminar1
pretože to je naša prvá príklad.
Názov organizácie, vo tento prípad je len moje meno.
Môžete samozrejme zmeniť na svoje vlastné meno, alebo na CS50.
Identifikátor organizácie, ak máte stalo sa, že webové stránky vezmite
doménové meno zvrátiť, com.yourname.
a potom názov produktu automaticky sa zobrazí
potom ako identifikátor zväzku.
>> Je zrejmé, že jazyk, ktorý sme bude používať pre dnešný deň je rýchla.
Môžete samozrejme použiť Objective C za to, ale dnes bude rýchla.
A my teraz hovoriť univerzálne zariadenie, tak
že to funguje tak na iPad a iPhone.
A necháme jadro Údaje nekontrolované zachovať
projekt relatívne Jednoduchý v súčasnej dobe.
Tak poďme do toho a kliknite na tlačidlo Ďalej.
A to ma opýtať kde chcem uložiť.
Budem ju uložiť do svojho počítača teraz.
>> Dobre, takže teraz je to to, čo bude stane, keď v skutočnosti otvorené Xcode.
A všimnite si, že Úplne prvá vec, ktorú uvidíte
je to výkričník, že hovorí, že nie podpis identity nájdený.
Zámerne som to urobil na mojom počítači a ja som
dúfal, že budem môcť skutočne opraviť,
preto, že chcem, aby ste videli, ako to bude skutočne pracovať na vlastnom stroji.
>> Choďte do toho a kliknite na tlačidlo Opraviť problém.
To sa vás spýta, či máte Existujúce vývojárov od spoločnosti Apple účet.
To je miesto, kde spojenie CS50 vývoj aplikácií tím
Je dôležité, aby vám nebude iba app účet
ale máte tiež schopnosť podpísať aplikácie
a dať ich na vašom zariadení so systémom iOS.
To je ne-- kliknutie fix problém nie je nutné
ak ste len tak budovať a rozvíjať miestnej úrovni,
úplne v iOS simulátore.
>> Ale teraz idem rozvíjať a dať ich
na môj iPad, ktorý bude schopný vysielať tiež.
Tak som to chcel skutočne dodať toto.
A že to bude pýtať ma na moju apple ID.
Takže to bude toto.
A musím priniesť My hesla, čo je tu.
Tak mi daj len jeden sekundu nájsť to, a skopírujte a vložte ho sem.
>> Kliknite na tlačidlo Pridať.
Bude to a opýtajte sa ma ktorý tím Chcem sa pripojiť.
Budem robiť školu inžinierstva.
Kliknite na tlačidlo Pripojiť.
Jejda, to je zlý.
Poďme to urobiť jeden.
Dúfajme, že z nich bude pracovať.
Tenhle stále nefunguje.
Dochádza nám z dobrých tu.
OK, toto by malo fungovať.
Teraz blízko, že.
A teraz poďme urobiť školu strojárstvo, kliknite na tlačidlo vyberte.
>> A teraz dúfam, že po pár sekúnd can-- OK,
Budem odvolať a požiadať.
Človeče, to bude fungovať.
OK, skúsim iný.
Poďme to urobiť jeden tady.
Živé ukážky ma nedarí.
Možno budeme musieť vrátiť len budova úplne na mieste,
ale to by bolo v poriadku v tomto prípade.
>> Tak tu, keď je to skutočne pracovné, čo budeme robiť, je len
vytvoriť veľmi jednoduchý Hello World aplikácie.
Tak toto je Xcode.
A ak ste ho ešte nevideli ešte, to môže byť trochu zastrašujúce na prvom mieste.
Je tu veľa tabúľ, je tu Mnoho doodads v rôznych oblastiach.
Ale len si uvedomiť, že je tu Naozaj niekoľko hlavných komponentov
do tohto vývojového prostredia.
Úplne vľavo, sú všetky súbory ktoré sa vzťahujú k programu
alebo na konkrétny projekt.
Budeme kliknutím okolo na niektoré z nich a my budeme
zdôrazniť najviac najdôležitejšie v priebehu času.
Na krajnej pravice, my mať sadu atribútov.
A všetky tieto atribúty, tam sú rôzne tabule pre atribúty.
Tabuľa sa bude meniť v závislosti na kontext hlavný obsah, ktorý
sa stane, že je v strede.
Teraz prostredná môže skutočne ukázať si rôzne veci, napríklad
váš kód sám.
Alebo môžete skutočne have-- pri kliknete na scenári, ktorý
je, mimochodom, len grafický reprezentácie užívateľa si
interface pre vašu application-- potom table atribúty
na ďaleko úplne vpravo bude skutočne zmení.
Teraz je tu pár ďalších veci, ktoré chcem zdôrazniť.
Môžete trochu preskúmať okolie v prostredí na vlastnú päsť.
Ale jedna z vecí, ktorá bola veľmi užitočná
je tu tlačidlo, v pravom hornom rohu okna.
Tam je to tlačidlo, ktoré vyzerá na ďaleko
nechal má odsek nasledované dvoma kruhmi a triediť
z dvoch šípkami od seba.
Ak máte prepínať medzi štandardný editor, ktorý
je úplne vľavo jedna, jedna že je vybratá v predvolenom nastavení,
a dva kruhy prekrývajú navzájom, to, čo skutočne dostať
sú dvojité pohľad tabule.
>> A to je v skutočnosti bude užitočné pre nás
kedy je potrebné prepojiť položky v užívateľskom rozhraní s kódom.
A budeme hovoriť o že za chvíľu.
Ale uvedomiť, že ak sa dostanete ešte viac skla, ako je tento,
si môžete zjednodušiť váš názor len trochu kliknutím späť
na svojej jedinej editora.
Zatiaľ je to dobré.
Takže v podstate máme kód na vľavo, atribúty na pravej strane,
a čo to je, že pracujeme tu v samom centre mesta.
>> Tak tu som klikol na hlavnom scenári.
A storyboard, opäť, je spôsob, Xcode
že môžete skutočne vytvoriť užívateľa interface len pomocou drag and drop
techniky.
A tak náš veľmi Prvá aplikácia tohto
je presne to, čo budeme robiť.
Chystáme sa ísť dole do veľmi ďaleko pravej dolnej časti
obrazovky, ktorá obsahuje rôzne užívateľských prvkov
ktoré potom môžete kliknúť a ťahať k vytvoreniu užívateľského rozhrania.
>> Teraz sú všetky z nich prvky sa nazývajú pohľady
preto, že dodávajú nejaký názor.
K dispozícii je pohľad obraz, pre príklad, v skutočnosti ukazujú,
obraz na užívateľskom rozhraní.
K dispozícii je stolný pohľad na v skutočnosti ukazujú tabuľky.
Tak ďalej a tak ďalej.
K dispozícii je široká škála pohľady, ktoré si môžete vybrať tu.
Tak práve pre teraz ideme hľadať štítku.
Stačí si len prechádzať všetky zoznamy, ktoré tam je.
Ale je tu vyhľadávanie bar na samom dne
že uľahčuje identifikáciu špecifické pohľady, že ste skutočne
Chcete pretiahnuť do svojho užívateľského rozhrania.
>> Našiel svoj label.
Chystám sa ťahať to tu, priamo na mojej ukážkovej aplikácie.
Priamo tam v prostrednej vyzerá dobre.
A ja budem písať "Hello World!"
Stlačte klávesu Enter.
Teraz mám štítok.
To nevyzerá, že je to sústredený úplne správne.
Tak som sa pokúsiť znova domu IT.
Našťastie ponúka tieto vodítka, aby sa veci oveľa jednoduchšie.
Budem sa snažiť, aby to skompilovať.
Dúfajme, že to bude skutočne pracovať.
A ak to tak nie je, za chvíľu to bude v skutočnosti vyzerať na mojom iPad.
Je to priamo tu.
Tu to je.
>> OK, tak to je ono.
Skončili sme.
Sme vytvorili naše veľmi prvej žiadosti.
Teraz samozrejme to nič nerobí.
Je to len označenie.
Neexistuje žiadna súvislosť medzi užívateľské rozhranie a kód.
Takže ak by sme skutočne chceli na vytvorenie tohto spojenia,
Ak by sme naozaj chceli mať nejaký komunikácie medzi prvkami
že existujú na displej a kód, ktorý
nám umožňuje ovládať tie prvky, potom
vlastne potrebujeme pozrite sa na samotnom kóde.
>> Tak toto je to, čo sa nazýva ViewController.swift.
A, najmä pre niekoľkých prvých programov,
to bude trochu Prevažná časť kódu, ktorý enter--
bude v tomto dokumente tu.
Je tu veľa vecí že je tu tak ďaleko, že jo?
K dispozícii je import UI kit trieda, prepísať, [? funk ,?] všetky tieto rôzne veci.
A to nie je úplne jasné, čo to je, že všetky to znamená.
Takže poďme urobiť krok späť od z Xcode pre trochu
a pozrieť sa na samotný jazyk, rýchle.
>> Tak sa rýchlo, to bolo v návrh a vývoj
u Apple pre asi štyri rokov môjho chápania.
A je tu pár funkcií o tom, že sú naozaj pekné.
Po prvé, je to zostavujú jazyk, rovnako ako C.
Takže musíte najprv skompilovať a spustite ho
Pred môžete skutočne spustiť kód, ktorý vedie.
Ale je tu, na rozdiel od C, interaktívne výzvu, že môžete skutočne spustiť
a zadajte ľubovoľné príkazy do.
A veľmi podobne ako konzola JavaScript ktoré môžete poznať hneď,
to v skutočnosti bude hodnotiť tie, príkazy a poskytne vám výstup.
A oni si dokonca vziať že na ďalšiu úroveň
a že som vytvoril niečo tzv ihrisko v Xcode
ktoré vám umožňujú vizuálne pracovať s kódom.
A budeme skutočne vidieť niekoľko príkladov z toho v len trochu.
Je založený na C. C je základom to, pretože všetky kompilátory
vytvoriť kód z C a vytvoriť objektový kód z nej.
Ale je to naozaj akcie pomerne málo syntax.
Bude to vyzerať celkom inak.
Bude tam nejaké podobnosti.
Ale tam sa bude pomerne málo rozdielov
v porovnaní s, povedzme, JavaScript alebo PHP.
A budeme ukazovať tieto sa len na chvíľu.
>> Teraz jeden z najväčších vecí, o rýchly, že je to pekné
je to, že, najmä v porovnaní C, to znamená, že je v bezpečí.
Všetko, čo v ňom je určený pre sa veľmi silno zadať.
V skutočnosti je to skoro nepríjemné na prvý, keď ste prvýkrát
začať pracovať s rýchle, ako moc to presadzuje typy všade.
Čokoľvek, čo je to reťazec musí zostať reťazec.
Je to veľmi ťažké, aby tak nejako previesť ho alebo nútiť do inej forme.
>> A opäť, ukážeme príklady tohto.
Ale nakoniec si uvedomiť, že to znamená, aby vás chrániť,
a vy myslím kód, z zhadzovať nejakým hrozným spôsobom, kedy
Máte nejaký nezodpovedajúce typu.
A opäť, s ním pracovať.
Vzhľadom k tomu, že bude frustrujúce najprv ako ste sa snaží prísť na to, prečo práve
začínaš tento neobvyklý chyba sa zaoberá typmi.
Ale to bude stáť za to do konca.
>> To sa zaoberajú automatickým správa pamäte,
takže už sa vám musieť vysporiadať s vecami
ako malloc a zdarma a všetky tieto druhy vecí.
A to je tiež navrhnutý pre univerzálnosti.
Takže zatiaľ čo môžeme použiť Xcode pre vytvoriť iOS aplikácie a aplikácie Mac,
môžeme tiež len používať ako skriptovací jazyk.
A tak ju môžeme použiť triedenie na miesto PHP alebo miesto
Python skutočne rýchlo analyzovať a proces
niektoré údaje, ktoré máme v našom počítači.
>> Má širokú škálu moderného rysy, Voliteľné, premenlivosť,
generík, uzávery, a veľa z toho veci, môže alebo nemusí rozpoznať.
A je to len trochu nešťastný časť jazyka, že niektoré z nich
trochu futuristický, moderné prvky, ktoré sú obsiahnuté v prvkami sú
tak hlboko zakorenený, že som vlastne bude musieť naučiť CS50.5 trochu.
>> Musíme sa naučiť trochu viac o niektorých prvkov s cieľom
aby skutočne pochopili, čo sa deje o a tak, že sa môžete pozrieť na kód
a necíti úplne stratené.
A uvidíte, čo mám na mysli sa tým, že len na chvíľu.
OK, takže let's-- dosť toho druh teoretického veci.
Poďme sa pozrieť na našu vlastne Prvý rýchly programom.
Je to jeden riadok kódu.
Linka 14 tu, ju hovorí, že tlač l n ahoj CS50.
>> Takže je tu pár vecí, ktoré je veľmi odlišné o tom v porovnaní
na veci, ktoré by vás mohli byť používajú na od C, napr.
Jedným z nich je, že neexistuje žiadny intmain, nie zahŕňať časť,
je tu nikto z tejto dodatočnej veci.
Patrí, rovnako ako štandardné I / O, rovnako ako knižnice
že skutočne poskytujú štandardné funkcie jazyka,
sú automaticky zahrnuté ako Súčasťou štandardnej knižnice SWIFT
a ktoré sú automaticky importované.
Nemusíte robiť že import ručne.
>> Intmain neexistuje, pretože hlavný vstupný bod pre kód
je v skutočnosti v začiatok kódu.
Takže akýkoľvek kód, ktorý máte od začiatku
bude skutočne vykonaný na začiatku.
Takže to naozaj výrazne zjednodušuje.
Všimnite si tiež, že nie je bodkočiarka.
K dispozícii je v tomto jazyku, žiadne bodkočiarkami.
Dáte vyhlásenie na jednotlivé linky
a potom ďalší riadok predstavuje ďalšie vyhlásenie.
Ak chcete, aby mulitiple vyhlásenie on-line,
potom máte oddeľte bodkočiarkou.
Ale z väčšej časti, pre dobrý štýl, my sme
nikdy vidieť bodkočiarkami pre účely separácie vyhlásenie
SWIFT.
Tak ako to vlastne funguje?
Tak veľmi podobne ako C my skutočne zostaviť to.
A tak môžeme urobiť, že pri použití rýchla c a potom 1.swift.
A potom po pár minút to bude zostavovať
a potom môžem bežať jednu položku.
A než to bude len hovoriť "Ahoj CS50."
Super, takže tam ideme.
Tu je náš prvý Hello world.
Poďme sa presunúť na číslo dva.
>> Teraz v tohle-- to zmenilo ľahko, pretože zatiaľ čo normálne vás
do-- v skutočnosti vždy máte na zostaviť rýchle aplikácie predtým, než
vlastne spustiť to-- jeden zo skvelých funkcií
ktoré som sa zmieňoval o predtým bolo, že rýchla môže byť skutočne použité na druhu
z režimu pseudo-interpretačnej, tam je v skutočnosti ako tlmočníka.
Ale čo to bude robiť, je tam je, v skutočnosti, rýchla aplikácia
že môžete spustiť.
>> Tak napríklad, ak ste práve zadať tu rýchly, čo sa bude diať
je to, že budete mať dotaz.
A môžete zadať svoj Swift kód, tlač ahoj, a spustite ho.
A to bude skutočne print-- no, to sa netlačia v tomto prípade
pretože vytlačená na stred von, ktorá nie je vidieť tu.
Ale to je vlastne schopný fungovať.
A tak v tomto prípade, ja som len bude použiť ako skript.
A ja si skutočne spustiť tento kód tam.
Takže ako som vlastne bežať to bude mierne líšiť,
ale uvidíte, že za chvíľu.
Teraz, v tomto prípade to, čo budeme urobiť, je najprv definovať premenné.
Tak to je, ako definovať premenná v rýchle,
ich používame nechať kľúčové slovo, nasledoval názvom premennej,
a potom sme sa poskytnúť nejaké inicializáciu dát voliteľne.
Takže v tomto prípade sme definovanie konštanta s názvom názov,
a budeme používať, že v výstup našej tlačovej linky
na samom dne, ahoj meno.
>> Teraz si všimnúť, že skôr než pomocou% s, môžeme zapouzdřit názov tejto
premenná v / () a byť schopný zřetězit v obsahu tohto
reťazec do tohto reťazca.
Teraz na rozdiel od C, reťazec je aktuálny typ real SWIFT.
A tak to sedí vedľa ints a vedľa
zdvojnásobí veľmi ľahko a prirodzene porovnanie
na niektoré z druhej jazyky, ktoré sme videli.
Tak to by vlastne fungujú rovnako ako vy by sa dalo očakávať.
>> Môžem bežať 2.swift.
A vidíme, že sa volám v skutočnosti spojené v "Ahoj Dane."
OK, úžasné.
Presun na číslo tri.
Teraz to bolo trochu biele lži, ktoré som
povedal, že spôsob, akým prehlasujeme premenné bolo použiť nechať kľúčové slovo.
Toľkokrát, koľkokrát, ako si možno môžete urobiť chcete použiť nechať, pretože to, čo robí, že
je to definuje konštantná.
A to hovorí, rýchly, že to môže optimalizáciu rýchlosti aplikácie
pretože vie, že premenná sa nebude meniť.
>> Tak hodnotí opatrne keď budete používať
premenná pre účely ho zmeniť.
A keď budete vytvoriť premennú len
držať niektoré údaje, a že je nie vlastne zmení.
Takže tento pojem nemennosti, to nie je v skutočnosti sa zmení,
je dôležitá, aj keď Ak dole, ako definovať premenné.
Tak tu sme definovali meno, nechal meno, a v tomto prípade
je to konštanta, ktorá je typu reťazec, a to sa rovná Dan.
>> A tak zatiaľ čo v predchádzajúcej verzia, to infers-- a "to"
Myslím swift-- Swift odvodí typ dát
že sme vstúpili do premennej.
V tomto prípade môžeme byť explicitné.
Tak nech potom názov tejto premenné je názov, potom hrubého čreva.
A za dvojbodkou my špecifikovať typ dát.
Tak už je to INT názov alebo Názov reťazca alebo niečo takého.
Ale namiesto toho nechal štítok, my sme určovaní, či
to je konštantná alebo variabilná, po ktorej nasleduje meno,
nasleduje typu Voliteľne.
>> Takže v tomto prípade sme definovanie Tento názov je reťazec.
Sme hovorí Dan.
A teraz mám ďalšie premenné, V tomto prípade je to len nálepka.
Ale všimnite si, že to je predponou pomocou kľúčového slova var.
Kľúčového slova var prostriedky že táto premenná môže
byť zmenený v neskoršom okamihu čas, niekde v kóde
môžeme ju a ona skutočne zmeniť nebude nám žiadnu konkrétnu chybu.
>> Môžeme to urobiť štandardný Zreťazenie Operátor sa tu pomocou na symbol plus
skutočne pridať naše meno do tohto reťazca.
A potom môžeme vytlačiť ako sme videli pred chvíľou.
Teraz povedzme, že vám Chcete vytvoriť premennú
ale nechcete ho inicializovať doteraz.
Nemáte ešte chcieť dať všetky dáta v ňom.
No, musím povedať rýchly aký typ dát
bude trvať, než si môžete vlastne definovať správne.
>> Takže v tomto prípade, kedy sme definovaný premenná nazýva stupeň musíme byť
výslovne o svojho druhu, pretože nemožno vyvodiť, len sa pozerá
na inicializovaná údajov ktoré poskytnete na neho.
To nám dáva chybu, ak sa Stačí zadať var stupeň, napríklad,
pretože nemá žiadny typ preto.
Takže stupeň = 100.
Tak, že 100 je číslo, to zapadá veľmi dobre do toho.
To bude aj naďalej fungovať.
Môžeme vidieť, ako potom sme môže zřetězit to v.
Teraz môžete byť pokušenia, ak ste skutočne
chcel zřetězit trieda do iného textového reťazca,
do iného reťazca, že by ste práve používať rovnako operátor zreťazenia.
A že by za normálnych okolností bola pravda.
Ale rýchlo nedovolí vám implicitne zmeniť typ dát.
Takže v tomto prípade, to linka, 25, sa nepodarí
preto, že trieda je integer a nie reťazec.
A tak je tu nesúladu nastavenie typov.
Takže musíte byť explicitné, ak Ak chcete zmeniť tieto dáta,
keď chcete donútiť to dát do iného typu
a povedať, OK, ja chcem, aby sa tento stupeň, čo je celé číslo,
a previesť na reťazec.
>> Tak som vziať kapitálu, s reťazec všetky typy, všimnete si, sú kapitalizované,
Int, Double, String, tak ďalej a tak ďalej.
Všetky z nich sú kapitalizované len preto, aby sa veci jednoduchšie.
A budeme hovoriť zarobiť String prejsť do it triedy.
A to bude vytvárať reťazec z toho celé číslo.
A potom sa môžeme spájať dva veľmi pekne.
Akékoľvek otázky týkajúce sa tejto veci tak ďaleko?
Dobre, poďme pluh až na číslo štyri.
>> Teraz sa poďme baviť o nejakej vyspelejšie štruktúry, ako sú polia a slučky.
A na rozdiel od C, pole SWIFT nie sú reprezentované ukazovateľmi.
Ukazovatele v rýchle, aj keď existujú, nazvaný
ako nebezpečné ukazovatele alebo nejaký podobný typ ako je tento,
oni nie sú vystavené na vás normálne.
Tak sa stáva veľmi ťažké pre vás manipulovať
pamäť priamo z vášho počítača.
>> Takže polia sú len dátový typ.
A oni odkazovať pomocou tohto druhu Odteraz štandardné hranatú zátvorku notácie
že ste nevideli.
Ale keď ste skutočne chcú definovať typ premennej
ako pole niektorých konkrétny typ, potom
dať tento typ do hranatých zátvoriek.
Takže to, čo hovorím je, že Som vytvoriť premennú s názvom
stupňa typu int pole.
A ja som nastavenie, ktoré sa rovná niektoré INITIALIZED údaje, ktoré sa v tomto prípade
100, 0, 90, 85, čo je len kolekcia ľubovoľných tried tu.
Teraz v tomto prípade som mohol, pamätať, odstráňte typ,
a bolo by možné ju odvodiť na základe údajov inicializovaná.
Ale keď som odstránil to a Potreboval som ju nastaviť neskôr,
potom by som sa uistiť, že tam mám typ.
Dobre, poďme ďalej.
Tak sme can-- poľa nám poskytnete odroda
metód prostredníctvom tohto tečkové notácie u vás sú pravdepodobne už poznajú.
Tak grades.count, napríklad, nám hovorí presne počet,
z prvkov, ktoré sú obsiahnuté v tomto poli.
>> Ak sa chcete pridať additional-- Teraz si všimnúť, že sa jedná o var
a ne-- to je premenná a nie je konštantné, čo
Znamená to, že môžem zmeniť obsah tohto poľa, môžem pridať objekty do toho.
Ale nemôžem povedať, len známky a potom v hranatých zátvorkách
štyri, pretože to bude mimo hranice chyby v tomto prípade.
Ak sa chcem naozaj zmeniť veľkosť poľa,
Musím použiť metódu dot append pridať niečo na samom konci.
Aj však môže zmeniť Individuálne indexy.
>> Takže som mohol použiť známky a potom hranaté zátvorky
nula na manipuláciu s touto prvou index a tak ďalej, ako by ste normálne očakávať.
A ja si to isté vlastne prijímať dáta z že rovnako.
Teraz je tu aj trochu fantázie metóda ako to urobiť, stupne a navyše rovná
a potom ďalšie index, ktorý bude append--
alebo nie iný index-- ale ďalší zoznam, ktorý
sa tento zoznam pripojí na zadnej strane stupňov.
A stupňa budú potom obsahujú všetko.
Ale to je tak nejako extra vec že som len, že vám ukazuje pre zábavu.
>> Teraz je tu pre sláčiky.
A to je začiatok, kde sa veci začnú meniť trochu.
Všimnite si, ako to pre sláčiky je odlišný od pre slučky v C.
Teraz som sa na vedomie, že pre slučky v Swift môže
bude vyzerať ako na slučky v C, ale je tu veľa viac užitočných konštruktov
že v podstate odstraňujú nutnosť mať k dispozícii pre var i = 0 bodkočiarka aj
je menšia než určitej dĺžky, tak ďalej a tak ďalej, že jo?
A tento konštrukt je len jeden z nich.
>> Pre index, index je nové premenná, v tomto prípade, v dosahu.
A to, čo hovorím, je, že tam je rozmedzí od 0 po celú cestu až do
ale bez grades.count.
Tak to dot dot menej ako značka predstavuje
rozsah hodnôt od nuly celú cestu až do grades.count mínus 1.
K dispozícii je samostatná subjekt, ktorý existuje,
čo je dot dot dot, ktorý by znamená, že chcem rozsahu od nuly
do jednotlivých stupňov počítať vrátane.
>> Ale v tomto prípade, pretože tieto polia sú nulové index, sme samozrejme
nechcú ísť do Maximálny počet tried.
Môžem sčítať známky, ako by sa mohlo očakávajú, a výstup všetky tieto veci.
OK, ďalej.
Teraz sa poďme hovoriť o funkciách.
Aby bolo možné definovať funkcie použiť funk kľúčové slovo.
A opäť, v Swift musíte buďte veľmi opatrní s typmi.
Tie poskytujú na to parametre definovaním, napríklad,
názov parametra a potom Colin, druh údajov
že očakávate, že parameter akceptovať.
>> Takže v tomto prípade máme Funkcie tzv počet print stupeň.
Prijíma premennú s názvom gradebook, alebo skôr parameter s názvom zadávanie známok.
A očakávame, že zadávanie známok byť pole celých čísel.
Ak to gradebook je prázdny, budeme tlačiť na jednu vec.
V opačnom prípade budeme tlačiť číslo známok, že to v skutočnosti má.
>> Teraz, ak chceme, aby sa vrátiť nejakú hodnotu, potom spôsob
že sme sa zmeniť táto definícia je skutočne používať toto kľúčové slovo šípka
alebo použiť tento šípkami signifier.
Tak tu budeme definovať funkcia s názvom priemer.
Chystáme sa prijať zoznam čísel.
A budeme sa vrátiť double, čo bude dúfajme
je priemer tohto poľa.
A aby k tomu, že v záujme skutočne vypočítať tento priemer,
budeme mať sumu, a my sa o Samozrejme zhrnúť všetky objekty
v tomto poli.
>> Všimnite si, že je tu nová štýl pre slučky tu.
Nemusíme byť explicitné o iterácia cez každej jednotlivej súčasti,
ale môžeme namiesto toho povedať triedy a gradebook, význam
že pre každý jednotlivý položka, ktorá máme v tomto,
stanovuje, že prostriedky v tomto premenná s názvom stupeň.
A ja chcem, aby niečo urobiť s ním.
Takže budem zhrnúť všetky tieto údaje a skutočne vráti dvojaký rozdelenie.
>> Teraz si všimnúť opäť tu je Koncept celé číslo divízie Swift.
Ak chcete zdvojnásobiť divíziu preto, že chcete desatinné miesta,
potom musíte byť explicitné, Nejde len o jednej strane,
pretože to nebude, aby vám donútiť dát na oboch stranách tohto,
musíte skutočne kurz obe strany do štvorhry
takže ste veľmi výslovne o tom, či
že robíte dvojaký rozdelenie.
>> Poďme ďalej.
Takže ak by som naozaj chcel accept-- takže v tomto konkrétnom príklade,
je to stále príkaz linka na základe žiadosti.
A my začíname vidieť niektoré z obmedzenia mladého jazyka
v tom, že aj keď môžeme prístup k argumenty pomocou
Táto process.arguments, to je ešte nie nevyhnutne najčistejšie
vec, ktorú som kedy videl.
Ale v podstate som povzbudiť, aby ste sa trochu pozrieť na tento kód
a snaží sa prísť na to, čo presne sa deje.
>> V podstate to, čo sa deje, je to, že zoberieme zoznam argumentov
a bolo donútiť ich do celé čísla, a potom sme
bude používať, že ako spôsob, ako tlačiť out priemer všetkých našich tried.
Ďalej.
Teraz je tu iný typ data-- ďalší typ dát skôr než polia
tzv slovníky, ktoré sú veľmi podobne ako hash tabuľky alebo hash mapy
a sú tiež podobné PHP asociatívne pole.
A tak majú predstavu kľúčov a hodnôt.
>> A oni sú definované tiež s Toto námestie držiak zápis,
ale rozdiel je že slovníky majú
vnútri hranatých zátvorkách, dvojbodkou.
A dvojbodka oddeľuje dáta typ, ktorý je kľúčom a hodnota.
Takže v tomto prípade budem vytvárať slovník prijať nejaké známky.
A to bude typu string: int,
čo znamená, že všetky kľúče sa bude reťazca,
a všetky hodnoty tých, ktorí kľúče sa bude celé čísla.
>> Čo to znamená, že môžem potom odkaz na konkrétne údaje,
že chcem používať tie kľúče skôr než pomocou číselných indexov, ako ja
by sa pre štandardné polia.
Teraz sa pozrime, je tu jedna dôležitá vec
že aj ja chcem zmieniť o tento konkrétny sekvencie kódu.
A to je, že je tu iný typ dát,
alebo skôr tam je to Myšlienka dát, ktorá je
obsiahnuté v Swift volal Voliteľne.
>> A čo Voliteľne znamená že vychádza zo skutočnosti,
že niekedy nebudeme získať dáta, ktoré skutočne očakávate.
A tak to, čo mám na mysli, že je-- poďme pozrite sa na tomto poradí kódu
ktorý opakuje cez všetky argumenty, ktoré boli odovzdané do tohto kódu
a snažia sa ich previesť, sa snaží rozdeliť do rôznych reťazcov,
preto, že prijíma veľmi konkrétny typ argumentu.
A potom sa to bude snažiť donútiť reťazce, ktoré predstavujú čísla
na celé čísla, ktoré sú stupne, že som sa potom môže spočítať.
>> Takže v podstate idem použitie tejto funkcie Rozdeliť že
existuje v rámci Swift štandardná knižnica.
Chystám sa prejsť do nej reťazec, ktorý chcem rozdeliť.
A potom pomocou tohto trochu funky syntaxe, čo
Nemyslím si, ak budeme vedieť, dostať, ale možno, my
bude skutočne špecifikovať presný znak, ktorý chceme rozdeliť na adrese.
Takže čo to vlastne vyzerá?
Poďme sa pozrieť na vlastne spustením tohto kódu.
>> Tak napríklad, povedzme, že mám kvíz a ja mám 50 na to.
A ja mám PSETs a Mám sto na to.
A ja got-- je tu ďalší kvíz a ja som dostal 40 na to.
Aj stlačte klávesu Enter, a nakoniec to, čo sa stane, je, že to, čo to robí
je s ohľadom na tieto parametre, štiepacie reťazca v týchto dvojbodky,
uznáva, že je tu Dva prvky každej z nich,
a to je v podstate sledovanie každého z nich.
>> Tak som sa v mojom slovníku kvíz, ktorého hodnota je reprezentovaný číslom 50,
Mám pset, ktorý má hodnotu 100, a kvíz ten, ktorý má hodnotu 40.
Potom sa neskôr v kóde I vlastne priemer všetkých týchto hodnôt
a vypísať všetky kľúče že osobitné slovník.
Ale je to dôležité takže si môžete všimnúť
čo sa deje, je to, že to, čo sme chcem urobiť, je, aby sa tento reťazec
a rozdeliť ho na tohto charakteru, ktoré môžeme urobiť znovu s týmto rozdelením
Funkcie používať tento druh zaujímavé, syntax, že existuje tu.
>> Práve teraz predpokladať, že to je v poriadku.
Pozrieme sa ešte na to len na chvíľu.
Ale teraz je tu zaujímavý aspekt, že sme vlastne
chcú, aby sa pokúsili zmeniť toto reťazec na celé číslo.
Ale v iných jazykoch čo sa môže stať je
že by sme asi skúsiť na to a buď vrátiť
nejaký Sentinel hodnota ako negatívneho
alebo možno null, alebo niečo také.
Alebo možno, že by len spôsobilo chybu.
A museli by sme potom chytiť túto chybu
a pokúste sa urobiť niečo vychádza z toho,
že táto konverzia na celé číslo zlyhal.
To je miesto, kde táto myšlienka o Voliteľné príde.
Môžete si skutočne vytvoriť dátový typ, ktorý je int otáznik, napr.
To znamená, že toto celé číslo je, v skutočnosti, voliteľný.
A čo sa stane, je, že to môže obsahovať číslo, alebo nemusí.
To môže byť v skutočnosti táto ďalšia idea, úplne volal Nill.
V ktorom to znamená, že je tu žiadna hodnota vôbec v tomto.
Nie je to ani nula, tam proste žiadna hodnota.
Neexistuje absolútne žiadna hodnota zastúpená.
>> A to je to, čo tento riadok 71 sa robí.
Je, že sa hovorí, že ja chcú, aby sa pokúsili nastaviť hodnotu,
premenná s názvom stupeň, sa rovná premena tohto reťazca do int.
Tak som si vzal tento reťazec, Táto prvá komponenty,
alebo skôr druhý komponenty, pretože táto
je nulový indexovaná, z toho Reťazec, ktorý som sa rozdeliť.
A ja chcem previesť že na celé číslo.
Ale to nemusí vždy prebiehať zvyčajne, pretože si predstaviť
čo by sa mohlo stať, keby, skôr než typ číslo, píšem samozrejme ako asdf.
>> Bude to zlyhá.
Nie je to v skutočnosti bude schopný konvertovať, že na celé číslo
ako by som očakával.
Takže skôr než výkop nejaký druh chyby,
máme túto myšlienku dobrovoľné.
A to znamená, že za použitie tento otáznik môžem povedať,
OK, to je možné, že som si vziať to, prevedie ho do int,
a dať ho do premennej, ktorý bude tiež int.
Ak áno, potom to znamená že táto bola úspešná
a táto prvá časť blok môže pokračovať.
>> V opačnom prípade sa nepodarilo.
Neexistuje žiadna hodnota v grade-- alebo skôr nie je žiadna hodnota v existujúcich,
a ja skutočne pokúsiť spracovať túto chybovú podmienku.
Budeš vidieť otáznik po celú dobu
v Swift a v príklade kóde Swift.
A v skutočnosti Nill operátor, je tento druh z otáznika, Voliteľne časť,
bude pravdepodobne jedným zo zložitejších vecí
sa trochu zabaliť hlavu okolo ako ste vlastne s ním pracovať.
>> To by mohol robiť teraz zmysel.
A v skutočnosti, keď som bol písanie ukážkový kód pre to,
Rozhodne som pochopil čo sa deje,
ale napriek tomu ma vystihuje prekvapenie každý tak často
keď by som zistil, že niektoré dáta bola v skutočnosti
nil verzia, voliteľná verzia z údajov, ktoré som očakával.
Takže len uvedomiť, že ak vás majú rozšírená verzia
musíte rozbaliť, že Dáta z tohto boxu.
>> Takže je to niečo ako ja- predstaviť, že by vás majú krabicu a obsahuje niečo.
A to, čo je potrebné urobiť, je si položiť otázku,
Je možné, že tento box vlastne obsahuje údaje, ktoré som hľadal?
Ak áno, potom vytiahnuť, že dáta von a vložiť do tejto premennej existujúcej.
Ak nie, potom som sa len preto, aby ignorovať obsah tejto kolónky
dokopy preto, že doslova neobsahuje nič.
>> Akékoľvek otázky na to?
OK, poďme od toho druh príkazového riadku veci
a začať hľadať na niektoré technológie
že Xcode poskytuje nám v podobe detských ihrísk.
Takže je tu veľa schopnosť tu Swift.
A ak ste otvorení Xcode a to spýta sa vás, čo chcete robiť,
môžete otvoriť ihrisko a len hrať okolo
s množstvom rôznych štruktúr a aspekty jazyka
ešte pred začatím dotykom iOS SDK alebo Mac SDK.
>> Takže v tomto prípade, povedzme, že som have-- Mám pomerne sprisahanecké príklad
tu, ale majte so mnou, ako triedime o prácu prostredníctvom tohto príkladu.
Povedzme, že musíme urobiť veľa exponentov s pevnou hodnotou,
rovnako ako vieme, že budeme musieť urobiť veľa štvorcových právomocí, napríklad.
Takže budeme mať nejakú hodnotu x, budeme ho námestia,
budeme trvať nejakú hodnotu y a budeme ju námestí.
Tak ďalej a tak ďalej.
>> Teraz by sme vlastne len vytvoriť Výkon 2 funkcie pre to, že jo?
A tak sme si vytvoriť silu 2 funkcie.
Budeme akceptovať double.
Budeme output-- alebo budeme vrátiť dvojaký typ.
Budeme mať tento výsledok a potom na dvakrát
to, čo sme vlastne brať výsledky, ktoré sa inicializuje na hodnotu jedna,
a vynásobte ju x.
Takže v podstate máme tu x krát x.
>> A tak som sa potom môžu, ako by sme očakávať, vziať to, spustiť sila 2,
poskytnúť k nemu určité údaje, sa mi páči 2,0.
A my sme si k videniu 4,0 výsledky.
Spustite moc 2 na 3.2 a my dostať sa na náš výsledok, 10.24.
Zatiaľ je to dobré, nie?
Teraz sme na mysli, dobre, OK.
Teraz som skutočne potrebujú, aby urobiť veľa síl 3.
Takže budem kopírovať vložiť všetky tohto kódu, zmeniť názov funkcie z
sila od 2 do výkonu 3, a všetko budú rovnaké, s výnimkou pre túto hodnotu
tu, tento rozsah, 1 ... 2.
>> Takže skôr než opakovanie Táto slučka dvakrát,
Chcem zopakovať tejto slučky trikrát.
Tak som len zmeniť túto hodnotu z 1 až 3-- alebo skôr 2-3.
Takže znovu, rovnaký kód, To je jediná zmena.
Teraz to funguje tiež.
Sila 3 ak v nejakom hodnotu 2.
Dostaneme 8.
SO 2 kocky.
A 3.2 Cubed je 32,768.
A tak Zatiaľ je to dobré, nie?
Ale dúfajme, že to je trochu bit červené vlajky pre vás
v tom, že teraz máme niektoré duplikácia kódu
s výnimkou pre niektoré veľmi malé prepnúť z jedného do druhého.
Takže je tam nejaký spôsob, ako by sme mohli byť schopní zjednodušiť
tento problém, kde môžeme skutočne, v behu, zistiť niektoré,
nám poskytli nejakú funkciu, ktorá má práve moc, že ​​chceme.
>> A je tu tento nápad uzávery, čo je naozaj, ale naozaj
dôležité v súvislosti s Swift, a v mnohých ďalších jazykoch.
Ale asi bude vidieť to používa skôr v Swift
preto, že je vložený v jazyku
než budete v iných i moderné jazyky.
A tak vznikla myšlienka uzáveru je to, že je my
môže mať funkciu, ktorá si kladie za cieľ je všeobecný funkcie, obyčajný moc
funkcie.
>> A táto funkcia bude prijímať tento exponent, že sme vlastne
chcete vytvoriť.
Tak napríklad, prvý inštancie, chceli sme moc 2.
Tak sme sa poskytnúť moc a potom v zátvorkách 2.
A teraz si všimnúť toho, čo to vlastne vracia.
To trvá vstup primeru volal y, že je celé číslo,
a vracia to šialené vyzerajúci vec parentheses-- zátvorkách
double a potom šípka double.
>> Čo to znamená, je, že som bude vracať funkciu.
Nie som vracať iný typ dát, ja som
v skutočnosti vracia funkcii že má tento parameter, ktorý
prijíma double ako vstup a výstupy fungujú ako návratová hodnota.
A ako výsledok, pretože teraz som volal Sila a odovzdať nejaké hodnoty pre y,
a ja som vytvoriť ten druhý function-- upozornenie, že je tu
ďalšie funkcie, ktorá je vytváraná vnútri tohle-- čo robím
je, že som sa zmeniť že hodnoty, ktoré človek
Hodnota, že som sa zmenil 2-3, teraz som, že to y.
>> A tento problém pretrváva.
Takže zakaždým, keď som volať moc z, v podstate, čo sa stane
je, že som si vrátil funkciu.
Všimnite si, že tu som definovaný nová premenná s názvom námestia.
Nastavil som, že sa rovná sile, ak túto hodnotu 2 k moci.
A čo to je späť funkcie.
Takže námestie, variabilný námestia, je teraz funkcia typu
že má tohle-- pardon, prejdite hore málo bit-- ktorá má túto podpis,
prijímať double a výstup double.
>> Takže teraz, čo som urobil Je som v podstate
vytvoril funkciu s názvom námestia, ktoré prijíma ľubovoľnú hodnotu a námestí to.
Môžeme vidieť, čo sa deje tu dole.
Námestie 3. napríklad znamená, že idem vziať hodnotu 3 a na druhú to.
Tak, ako presne to funguje?
Keď som sa prejsť energiu z 2--, keď som prejsť 2 do tejto moci funkcie,
táto premenná y je obývaný s touto hodnotou 2.
A to je trochu koná v pamäti.
Že to niečo ako sa konala v stáť niekde v počítači,
my to naozaj jedno, ako alebo tam, kde v tomto bode.
>> Ale ja som sa vrátiť túto funkciu volal exponenciaci.
A opäť, to nezáleží to, čo táto funkcia sa nazýva,
Naozaj to tak dá nazvať čokoľvek, že prijíma double a vráti double,
ale používa túto hodnotu y vnútri nej.
Takže aj keď je to táto funkcia, táto exponentiater funkcia, ktorá je
boli vrátené späť do mojej premenné, ktoré som volal námestí,
to v ňom obsiahnutý tento pojem o tom, čo bolo y.
A to si pamätá, že.
>> Takže zakaždým, keď hovorím, že funkcia, ktorá je teraz nazývaný námestie, používa to.
Ale to tiež znamená, že môžem vytvorte ďalšie premennú pomocou
iná sila.
Tak som si vytvoriť kocky premennú, pre príklad, poskytnúť jej moc 3.
Teraz kocka bude skutočne trvať aj niekoľko hodnota a kocky, ktorá aj vrátiť.
Takže môžeme vidieť, že som si Hodnota 8 z toho.
>> Ale táto hodnota y nemá zmeniť, pretože sú
sa konala v akejsi nezávislých premenných.
Sú nejako sa konala v nezávislé priestory v pamäti.
Takže kocka bude mať vždy x k sile 3.
A námestí bude mať vždy x k sile 2, ktorý
Znamená to, že námestie bude vždy štvorcových čísla, ako som očakávať.
A kocka vždy kocky čísla, ako som očakávať.
To tiež znamená, že niekedy môžete si nejaký funky syntaxe hľadá
kde budete mať silu na veľmi dolnej časti obrazovky tu, sila 5.
A odovzdáte do výsledku.
Môžete volať, že funkcia, ktorá je boli vrátené s číslom 4.
A tak to, čo v podstate to 4 je na piatej silové,
môžeme vidieť výsledky tu.
So mnou tak ďaleko?
>> Takže tento nápad sa nazýva uzáver, pretože to, čo sme v podstate robiť
je, že sme už zapuzdrenie niektoré dáta into-- sort
obvodových tieto dáta do funkcie, a my sme
budú môcť znovu použiť túto funkciu.
Teraz je táto syntax však môže v skutočnosti mali zjednodušiť, veľké množstvo.
A je tu veľa možností V Swift tohto zjednodušenia.
A to je to, čo druh tie následné vlastne pozrieť.
Takže v 7b sme napríklad tento presne rovnaký kód.
>> Ale teraz skôr než vlastne definovať funkciu
Vnútri tejto moci fungujú a dať mu meno,
a potom sa vrátiť názov tejto funkcie, ktorá
potom sa používa ako súčasť toto uzavretie, namiesto toho sme
len tak to zjednodušiť.
Nepotrebujeme táto funkcia byť menovaný.
Tak toto je koncept anonymné funkcie, kde môžeme teda
prijať ako vstup, v zátvorke tu, premenná x, ktorá je typu double.
>> Chystáme sa vrátiť typu double.
A potom kľúčové slovo, n, je počiatok tejto funkcie.
Takže si všimnúť, že toto všetko je vo vnútri zložených zátvoriek
a my sme definovanie fungujú tu anonymný.
Len jednoduchší spôsob, ako definovať presne to isté.
OK?
Ale vydrž, vlastne Swift nám umožňuje ísť ďalej, a zjednodušiť ešte viac,
pretože v skutočnosti nemáme jedno, že tento parameter je
pomenovaný žiadnu konkrétnu vec.
To môže skutočne nazvať čokoľvek a stále ešte môžeme použiť tento prvý parameter.
>> Takže v skutočnosti je to zvláštne typ dát v anonymných funkcií,
Tam je to zvláštny názov premenné v anonymných funkcií
ktoré začínajú znak dolára a predstavujú
čísla parametrov, nula indexovaná, pre túto funkciu.
Takže je tu pár vecí deje.
Tu budem vracať, a potom sa zložená zátvorka predstavuje funkciu,
že jo?
>> Všimnite si, že nemám definovali parametrov typy alebo návratový typ.
To môže v skutočnosti byť odvodené vzhľadom na podpis
tejto pôvodnú funkciu.
Takže môžeme eliminovať že ako možnosť.
Ale tiež môžem použiť znak dolára nulový reprezentovať túto prvý parameter, ktorý je
prešiel do tejto anonymnej funkcie.
Takže ho ešte viac zjednoduší.
OK?
Zatiaľ je to dobré?
>> Teraz je to to type-- sa vám zapamätať si túto znak dolára nulu
že sme videli v tomto zloženou zátvorkou že sme videli len malú chvíľu
Pred v tomto Swift šiestich príklad?
Bolo to tu.
Všimnite si, že je to presne to, čo sa pozeráme,
je to, že sme prešli do tejto funkcie Rozdeliť
anonymné funkcie, ktorá kontroluje prvý parameter
aby zistil, či sa rovná symbol hrubého čreva.
A to je presne to, čo je deje, je to, že všetky
sme doing-- návrat Kľúčové slovo je naznačený
V tomto case-- vraciame táto hodnota, kam máme porovnanie
Prvý parameter proti táto postava hrubého čreva.
A tak, aby trochu demystifikuje toto.
A vy budete vidieť tento konštrukt pozemok v Swift syntax, tak sa majte
na mysli, keď ste pričom sa pozrieť na toto.
Teraz sa môžeme dostať preč priečky trochu
a ísť naozaj fantázie, ktorá ukazuje ešte niektoré ďalšie SWIFT moci.
Dalo by sa dokonca vidieť niektoré z nich vo vzorke kódy.
Takže to je dôvod, prečo idem ukázať vám to.
>> V podstate to, čo môžeme urobiť, je to, že ako prvý zo všetkých, to bolo celkom sa zbytočne pre mňa
implementovať celú tú moc kód, pretože pri importe Darwin
knižnica, v skutočnosti obsahuje funkciu volal pow, že to urobí za vás.
Takže môžeme zjednodušiť ho ešte viac a máme Power Up funkcie už len
byť nádherný jednu vložku, kde sme práve vrátenie tohto anonymné funkcie, ktorá
prijíma dolára 0, pretože jeho bázy a Y ako jeho exponent.
>> Ale môžeme naozaj, naozaj efektné, keď sme
Uvedomujem si, že Swift má veľa sily pod kapotou.
Mnoho z operátorov, ktorý sme sa zaoberali,
a znaky a symboly rozdelenie a Všetky tieto veci, ktoré by ste normálne
pracovať s s dátovými typmi v programovacom jazyku,
sú vlastne rozšíriteľné v Swift.
Takže to, čo to znamená, že sme v Môžete definovať vlastné operátormi.
>> Takže teraz som unavený písanie v tom všetkom pow a potom zátvorky a potom
bázy.
Nechcem to urobiť.
Vlastne som chcel mať subjekt, ktorý mi umožňuje robiť to.
Takže môžem povedať, rýchly, že chcem vytvoriť operátora, hviezda
star-- mimochodom nemôžem používať karát pretože karát je operátor, ktorý
robí niečo úplne iného.
Takže nechcem radiť z zrazí s tým.
A tak to, čo vidíte v rôznych jazykov, vrátane Pythonu,
je ako prevádzkovateľ star star reprezentovať exponenty.
>> Tak to je jediný dôvod, prečo Preto som urobil.
A to bude operátor typu Infix.
A musím poskytovať k nemu nejaké informácie
o prednosti tohto Operátor tak je to vľavo asociatívne.
Je to ako pomerne v porovnaní s vysokou prednosť
k sumačního alebo násobenie.
Je to vyššia prednosť než všetky tie.
Tak ďalej a tak ďalej.
A potom som sa definovať funkcie, ktoré skutočne
diktuje, čo to robí operátor.
Takže za predpokladu, že mám doľava strane a pravá strana,
čo by bolo treba lepší názov premennej za to.
Ľavá strana a pravá strana.
Potom som si vziať túto právomoc ľavú stranu na pravej strane
a vráti túto hodnotu.
Takže teraz je to super sladká.
Všetko, čo musíte urobiť, je 2 star star 3 a ktorý je 2 až treťou mocninou,
a dostaneme hodnotu 8.
2 star 10 je 2 10. moc, dostaneme 1024.
>> Takže teraz naša sila funkcie, čo je opäť iná,
preto, že celá myšlienka tejto bolo, že máme jednu funkciu, ktorá
má vždy nejakú hodnotu a násobí to-- alebo skôr
má exponent k rovnakým výkonom.
Takže teraz je to ešte jednoduchšie.
Takže teraz je to len dolár Prihláste 0 Hviezda y.
Nemáme ani naďalej používať, pow.
>> OK, kto prehral?
Robíme v poriadku?
Akékoľvek otázky týkajúce sa tejto veci?
Jo?
>> Divákov: Keď you-- [nepočuteľné] funk moc y double.
Takže, keď sa vraciate funkciu.
DANIEL Armendariz: Funk moc y double.
Ach jo, ja neviem čo čísla y sú.
Ospravedlňujem sa za to.
>> Divákov: Prečo sa vracia Funkcia [nepočuteľné] skriňu.
Nie je dolár nula star hviezda y [nepočuteľné]
zistíte, že operátor s tým vrátenie double [nepočuteľné] zdvojnásobí?
>> DANIEL Armendariz: Tak poďme mi odpovedať na vašu otázku
ako som to pochopil, a môžete mi povedať, keď som sa pochopiť vašu otázku.
Takže tento konštrukt, zložená zátvorka znak dolára nula star star y,
je funkcia.
A to prijíma parameter, ktorý je zastúpená týmto znakom dolára nula.
Návratnosť kľúčové slovo je naznačený v tomto veľmi krátky, anonymný funkcie syntax.
>> Čo znamená, že v podstate čo to hovorí
je to, že som vymedzenie function-- a potom budem
Len hovorím something-- kde mám nejakú hodnotu y.
Mám y, čo je dvakrát.
A Vraciam double.
A ja mám v tomto priznaní y- ľúto, Nemal som nazval y- x.
Ach, ach jo, ach jo.
X-- nope-- star star y.
>> Tak to je len zjednodušená verzia tohto.
A tak dôvod, prečo mám dolár znamenia nula je, že použitie tejto kabíny
Znamená to, že už nemám typu prašane, alebo už nie robiť
Musím niečo urobiť ako 3 star star 2.
Môžem len mať jeden Funkcia s názvom námestia
že sa bude vždy nejaká hodnota ako vstup
a vlastne vrátiť námestí to.
>> Takže celá účelom uzavretia je len trochu zapouzdřit skutočnosť
že som sa vždy chcel y používať kedykoľvek Hovorím, že funkcie ako sila
Pri užívaní tohto exponent.
Takže vracať sa potom, funkcia, ktorá prijíma
dvojitý, čo je základný, a vráti výsledok tohto exponentu
je tu tlačidlo.
A to je hlavný rozdiel.
Tam bol len trochu prekvitať.
>> To nie je nič iného v porovnaní s predchádzajúcimi príkladmi,
ale to bolo len trochu prekvitať môžeme skutočne
vytvoriť operátora v Swift a vlastne robiť veci s tým,
čo je druh super vec.
Už som odpoveď na vašu otázku?
Sladké.
Čokoľvek iného, ​​než sme ďalej?
OK.
>> Teraz tento druh prosia Otázkou je, that-- dobre v poriadku,
Teraz máme možnosť pre funkcie, ktoré majú byť vrátené.
Môžeme tiež prejsť funkcie, ako sú údaje o alebo ako parametre ďalších funkcií?
A v skutočnosti môžeme.
Tak povedzme, že máme všetky s rovnakým kódom.
Máme druhú premennú že sa námestie tento kód.
A máme premennú kocky že bude kocky niektoré dáta.
A my vlastne chceme použiť pre široký rozsah čísel.
>> Takže to, čo by sme mohli byť v pokušení robiť, samozrejme, čo je iste platný,
je iterácii tohto zoznamu čísel a aplikovať moje funkcie námestí a kocky
a získať dva nové zoznamy sú výsledky že sú to originálne zoznam štvorcový
a kocky, resp.
Dokonale prijateľné.
Ale čo je to vec, ktorá tu vidíme, je, že máme,
znova, duplikácia nášho kódu.
A je tu možná príležitosť Pre nás zjednodušiť to trochu.
Čo keby tam bol spôsob, ako pre nás v skutočnosti vždy iteráciu cez nejaký zoznam
a len odovzdať tento čarovný funkciu premennú, ktorá
predstavuje funkciu že chceme použiť
na každú jednotlivú položku v tomto zozname.
Tým sa poňatie toho, čo sa nazývajú vyššieho rádu funkcie.
A to je v podstate to, čo to je, je to, že môžeme vytvoriť funkciu.
>> A v tomto prípade sa to volá mapper, len aby to meno, len
mapovanie nad každým jediná položka v zozname.
Kde vezmem zoznam a beriem funkciu.
A to funkcie, samozrejme, má určitý podpis.
Prijíma ako dvojnásobok parametra a to bude výstup je double.
A celý výsledok táto funkcia bude
bude nový zoznam, ktorý je typu double.
OK?
>> A čo budem robiť ak je použiť túto funkciu f
ku každému prvku v mojom zozname.
A reply-- a radšej vrátiť tento nový Zoznam v dôsledku, ktorý je naozaj cool.
Teraz som si prejsť funkcie okolo.
A táto myšlienka vyššieho rádu Funkcia je naozaj dôležité.
A to je naozaj len mapper Implementácia chudáka
z funkcie, ktorá je postavená do Swift s názvom mapy.
A to robí presne to, možno aj trochu lepšie.
>> To je tak nejako všeobecný, zjednodušená verzia,
nám umožňuje vidieť poňatie, ktoré tu platia.
Teraz sa pozrite na to, ako som môže skutočne použiť môj námestí
a moja kocka funkcie Do tohto zoznamu čísiel.
Som bežať môj mapper.
Aj poskytnúť k nemu môj zoznam čísel.
Aj poskytnúť jej na funkcia, ktorá sa deje
použije na každý z týchto indexov.
A to bude Výstup ako výsledok.
A ja sa dostať vidieť, že som sa na druhú a kocky Moje čísla ako výsledok.
>> A samozrejme bude trvať mapper nejaký druh anonymné funkcie.
Dokonca môžeme vidieť, že som vytvoril Nová anonymné funkcie, ktorá
len trvá nejaký parameter a rozdeľuje ju 2.
A môžeme vidieť, že som v skutočnosti, delená môj zoznam o 2 miesto.
Pohode?
Zatiaľ je to dobré?
Dobre, teraz poďme vrátiť sa k tejto myšlienke.
Poďme realizáciu tohto späť v kontexte uzatvárania známok.
>> A keď to urobím, môžeme vidieť, že môžem použiť širokú škálu týchto options--
alebo celá rada z nich vyššieho rádu funkcie
skutočne zjednodušiť svoje schopnosti robiť Rôzne veci na zozname čísel.
Tak napríklad, keď som sa zoznam čísel,
jeden z vyššieho rádu funkcie že existuje, sa nazýva znížiť.
Čo znížiť robí skôr ako na mape, sa znižuje bude
trvať dva prvky v zozname, bude trvať nejakú funkciu, ktorá
porovnáva dva prvky zoznam, a to potom bude
druh output-- Výstup z tejto funkcie
bude ďalší prvok, ktorý potom v porovnaní s ostatnými.
>> Takže by ste mohli použiť na vlastne súčet čísel vo vašom zozname.
Napríklad, ak ste mali zoznam 1, 2, 3, 4, 5,
budete mať prvých prvkov, 1 a 2.
Môžete sa na neho vzťahujú sčítanie funkcia, ktorá zoberie tieto dva prvky
a vypľuje jeden z týchto prvkov, čo by hodnota 3.
Potom sme sa túto hodnotu 3 s ďalší prvok zoznamu, zhrnul tie dva,
a potom ďalej sa ustanovuje zoznam.
>> Sme zníženie Zoznam na jednu hodnotu.
A to len tak sa stane že symbol plus
je operátor, rovnako ako sme práve videli.
Tento operátor je v skutočnosti, že funkcia
má práve tento zoznam, ktoré sme bude chcieť, radšej týmto vlastnostiam
že by sme chceli.
Tak som povzbudiť, aby ste pozrite sa na toto.
Chcem, aby tak nejako pohybu Na niektorých z tohto kódexu
takže vlastne môžeme pozrieť na niektoré skutočný, reálny, pravdivý Swift v Xcode,
v iOS vývoji.
Ale pozrite sa na to a uvidíme, či môžete
analyzovať skrze to, čo sa deje s niektorými z týchto vyšších rádov
funkcie vrátane filtra, znížiť, a budete dokonca
pozri niekde tu na mape rovnako.
Je to priamo tu.
Tam, kde to bude trvať sekvenciu známok a to bude v skutočnosti
Pre je pomocou prepínača konštrukt, ktoré môžete poznať z C,
ale v skutočnosti je to oveľa viac silnejší ako spínače konštruktu
že máme v C.
>> A budeme platiť, že pre každý prvok v zozname
a skutočne poskytovať stupeň písmeno každého
z týchto tried s využitím všetkých týchto pojmov že sme práve hovorili predtým.
Teraz vyhnúť len za minúta a hovorí o structs.
A tak structs sú čakať v C, ktoré sme boli schopní definovať nový typ dát.
Štruktúry existujú vnútri Swift.
A tak sa mnoho ďalších konštruktov tzv vymenované typy a triedy, ktoré naozaj
tento nápad úplne iný level.
>> A v podstate je to len spôsob, ako definovanie nového typu dát.
Takže ak ste get-- keď prídete po triede alebo structs alebo vymenovaných typov,
nenechajte sa zmiasť tým.
Je to len spôsob, ako definovať nejaká nová konkrétny typ dát.
A to je naozaj dôležité pri hovoríme o iOS pre vývoj aplikácií
preto, že všetko, čo existuje v rámci aplikácie iOS
je v podstate predmetom nejakého druhu.
A objekt je v podstate trieda alebo enum alebo struct.
>> Takže v tomto prípade, že som definovať nový typ dát
že volám hodnotenie že je niektoré vlastnosti, vrátane
meno a postupnosť stupňov.
Takže jeden typ hodnotenia že by som mohol mať na mysli
by kvízy, napríklad.
Ja by som chcel mať hodnotenia, ktoré bolo kvíz
a ktorý mal rôzne akosti spojená s tým, pre kvíz jedna,
kvíz dva, tak ďalej a tak ďalej.
>> Alebo by som mohol mať iný typ posúdenie pre problémové sady.
A môžem robiť veci.
Ja si skutočne mať Funkcie v rámci tohto typu
z údajov, ktoré sú teraz volal metódy.
Takže ak ste niekedy vidieť metóda slovo, je to naozaj
je len funkcie, ktoré sa vzťahujú k veľmi konkrétnej triedy,
alebo veľmi špecifický typ dát.
To nám umožňuje upravovať dáta vnútri.
>> Takže inými slovami, ak chcem, aby Pridanie triedy do svojej analýzy,
potom všetko, čo potrebujete urobiť, je, aby pripojiť skóre, ktorý bol vstup
k tejto funkcii sa môj vnútorný majetok.
Je tu ďalší čistý konštrukt tu v Swift, čo je to dot dot dot
operátor, čo znamená, že bodové hodnotenie teraz prijímať ľubovoľný počet celých čísel.
A skóre bude pole celých čísel, ktorá
boli odovzdané do mojej funkcie, ktorá Znamená to, že môžem robiť veci, ako je toto.
>> Môžem si pridať stupňa a len poskytovať ľubovoľné množstvo celých čísel do neho
a v skutočnosti byť poľa z týchto hodnôt v mojom funkcie
alebo vo svojom spôsobe, ako je tomu.
Teraz je to dôležité, pretože všetko v Xcode, všetko v iOS,
je v skutočnosti objekt.
Takže majte na pamäti, že Keď sme bust otvorené Xcode
a preskočte za iOS verzia dve a tri
a vlastne ísť na verziu štyri.
>> A opäť, bude to všetko zverejnené na semináre stránke.
iOS štyri je trochu plnohodnotné realizácia veľmi základné aplikácie.
A čo táto aplikácia robí, je to načíta UI, ktorý vyzerá takto.
Opäť platí, že ak klikneme na scenári môžeme vidieť, že to je to, čo to vyzerá.
To je UI.
Má titul na samom vrchole.
Ja som to nazval web galérie.
>> Uprostred je prvok volal view UI image.
A na konci je tu Panel nástrojov s jedným tlačidlom, ktoré
Má elastické medzery, ktoré ju umožňujú, aby centrum uprostred tohto panelu.
A čo sa stane, je, že keď to zaťaženie stiahne JSON súbor, ktorý je
obsiahnuté na serveri inde, analyzuje, že JSON súbor,
a súbor JSON vyzerá trochu ako je tento.
Súbor JSON vyzerá takto.
Tu to je.
>> Má názov albumu a má rad fotografií.
Každá z týchto fotiek majú meno a tiež
URL sami, ktoré reprezentujú jpeg verzia tohto jednotlivých fotografií.
Takže to, čo sa stalo, je, že keď tento program zaťaženie, stiahne súbor JSON,
analyzuje to, kladie to všetko v ekvivalent poľa v iOS
app vývoj, ktorý je nsarray.
A potom som si potom načítať tieto dáta do aplikácie
a nahrať ju na mojej obrazovke.
>> Tam je obraz, ktorý bol vložený tlačidlom na samom dne.
Ak mám na tlačidlo Get Nasledujúci obrázok, potom ťahá, že obraz z internetu
a nahrádza tento obraz v pohľade UI obrazu.
Takže si môžete stiahnuť a vlastne pozrite sa na to na vašom počítači.
A stavať to a vlastne skompilovať do vášho zariadenia.
Ale v podstate proces bol to, vytvorte storyboard--
alebo skôr nie create-- ale vybrať scenár.
A vlastne we'll-- ak nechcete mind-- budeme trvať len niekoľko sekúnd
skutočne ukázať, ako sa to stalo.
>> Len tak, ako môžeme vlastne dosiahnutie tohto cieľa je vyrobená trochu viac
zrejmé.
Jednotlivý aplikácie, ja som zavolá tento seminár
štyri zastupujúci tento konkrétne číslo.
Uložte ho na ploche.
OK, bude kliknúť na scenári.
A čo budem robiť je nájsť môj názor obrazu,
pretiahnite ju na svoje používateľské interface a centrum za to.
Teraz už len stačí centrovanie to bohužiaľ sa nebude robiť veľa,
až na obrazovku že je táto presná veľkosť.
>> Takže sa môžeme presvedčiť, že Kliknutím na tohto dvojitého kruhu vec,
zvrhnúť túto pop up menu tu a meniace sa
k náhľadu, kde budeme vlastne šancu na náhľad, ako
Tým sa vlastne pozrite sa na iných zariadeniach.
Ako môžeme vidieť, nemáme ani vidieť na tomto konkrétnom prípade.
Takže budem zavrieť to teraz.
>> A budem voliť Táto ikona sa na veľmi
spodnej časti obrazovky.
To hovorí, že Vyriešiť Auto problémy rozloženie.
Je nám ľúto, je to odrezať na dne.
Ale keď kliknem na to, čo som si to pop up-- ísť preč.
To, čo som si to pop up, ktorý mi umožňuje pridať chýbajúce obmedzenia.
A tým, že robí to tak potom tak nejako zamknúť
do strednej časti obrazovka ako ja by sa dalo očakávať.
>> Teraz s cieľom, aby si toto tlačidlo na vrch, musím ísť do editora.
Prejsť na vložiť do a kliknite na tlačidlo Navigation Controller.
Čo to urobí, je, že sa pridá Celá táto ďalšia zložka k nej,
ale v skutočnosti bude odkaz späť k svojej pôvodnej UI.
A detaily, opäť, my nie Naozaj je potrebné sa starať o práve teraz.
Ale ja to chcem mať Panel nástrojov na samom dne.
Tak som to skontrolovať ukazuje Toolbar.
>> A to poskytuje v rámci môjho názoru, ktorý je teraz niekde inde,
môžeme vidieť, že to súvisí tu.
To teraz ponúka panel nástrojov v spodnej časti svojho užívateľského rozhrania.
Takže teraz, skôr než výber view image, nájdem štítok,
alebo skôr toolbar-- pozrime sa, kde to je?
Ako sa volá?
Položka button-- bar-- item-- sorry-- bar tlačidlo položka.
PLOP, že tam a aplikovať pár o flexibilné priestory na oboch stranách
skutočne centra to.
Takže teraz som vytvoril môj UI, v podstate.
A môžem dať mu meno, pod dvojitým kliknutím na samom vrchole
tu a hovoriť webové galérie a tak ďalej.
Teraz opäť sa jedná o prvky, ktoré existujú samy o sebe.
A musím sa pripojiť je do svojho kódu, ktorý
Môžem urobiť opäť prináša up tohto dvojitého ikony kruh,
prepnutie z náhľadu.
Čo, mimochodom, teraz môžeme vidieť, je pekne v strede a bude vyzerať dobre
na rôznych zariadeniach.
>> Prepnite do automatického režimu, ktorý bude vyvolajte ViewController kód.
A teraz táto časť je dôležitá.
K tomu, aby vám umožní pripojiť tieto dva prvky, kód k UI,
vyberte položku, ktorá sa chcete pripojiť.
Takže v tomto prípade sme skutočne chcú kódovať
zmeniť obrázok, ktorý je obsiahnutý v rámci tohto pohľadu UI obrazu.
Takže ak ovládate na tlačidlo od view image a ťahať,
zistíte, že vám trochu bar, keď necháte odísť všetko to pop
up dôjde.
>> A to hovorí, že budeme Vytvorenie pripojenia.
A odtiaľ chcem, aby to názov, niečo ako galéria.
Stlačte klávesu Enter.
A to vlastne poskytuje premenná s názvom galéria
že som sa potom môžu odkazovať v mojom kóde obrázok zmeniť, napríklad.
Tak ako to, že kód vlastne vyzerať?
No zase, ja nechcem trávia príliš veľa času na to.
A ja Odporúčame vám si ju stiahnuť a pozrieť sa.
Ale jeden z najviac Dôležitým aspektom je kód
že vlastne načíta obrázok.
>> Takže v tomto prípade chcem aby sa v rámci mojich fotografií
pole, ktoré je obsiahnuté v mojej triede.
Chcem definovať názov a adresu URL ktorá bola analyzovaná z tohto JSON.
Vlastne požiadať zariadenie, aby si URL, načítať URL z toho,
a potom načítať dáta z Obsah tejto URL.
Potom previesť tieto údaje do obrázka priechodom do obrazu UI.
Takže znovu, to všetko sú rôzne druhy objektov, rôznych typov tried.
>> A potom som si potom nastaviť my gallery.image rovná dát.
A to je druh mäsa z toho, že v skutočnosti je potom
schopný zmeniť zmeniť dáta from-- obraz od jedného k druhému.
Takže znovu, dúfam, že teraz spústa konštruktov
bude trochu väčší zmysel.
Všimnite si, že tam je nejaký výkričníky tu.
V výkričníky sú v podstate súvisí s Voliteľne.
>> To, čo som v podstate povedať, že aj bez kontroly
aby zistil, či tam dát v tento voliteľný,
Chystám sa ísť dopredu a prevziať že je tu a rozbaliť ho.
Pamätajte si, že sme použili analógiu druh balíčka pre Voliteľne
a musíme rozbaliť Balík a vytiahnuť dáta von.
Výkričník sily, ktoré sa v skutočnosti stalo.
>> Ale ja viem, že to je bezpečné, pretože som skontroloval
aby zistil, či obrazových dát sa rovná na nulu, ja som vlastne skontrolovať
a uvidíte, či voliteľná bol, v skutočnosti, sa nepodarilo.
V prípade, že bol v skutočnosti už zlyhal.
A tak som si istý, že akonáhle sa dostanem k tomu bod môžem bezpečne rozbaliť, že dáta.
Možno vidieť tiež forma otáznik.
Ak teda prejdite nadol, kde som treba skutočne analyzovať dáta.
>> Takže nenechajte sa odradiť Tieto druh dlhých mien.
Nájdete v Apple developer site veľa
odkazov na všetko objektov a všetky procesy
že v skutočnosti, aby to bolo možné.
Ale Všimnite si, že sa jedná v podstate funkcie, kde by som odovzdať niektoré dáta.
A ja sa vrátim nejaké údaje.
A musím použiť ako kľúčové slovo do previesť ho do tejto nsdictionary?
Čo je opäť, voliteľný nsdictionary.
Čo som potom je potrebné, aby skontrolujte, či existuje.
>> Tak som sa ho použiť, ak nechal úspešných rovná analyzovať,
potom viem, že na želanie v skutočnosti obsahuje niektoré údaje.
Alebo to, čo tu robil som bol na len predpokladať, že v prípade, že
žiadne chyby, že je v skutočnosti v bezpečí.
Dobre, chcem poďakovať vám všetkým moc ďakujem za príchod.
Viem, že to bolo veľa, ale to bolo len hodina
hovoriť o nejakej pekný moderný veci.
A tak dúfam, že budete mať možnosť stiahnuť všetky kód
a vziať lepšie, dôkladný pohľad na to.
Druh presvedčiť sami zo všetkých tie veci, čo sa deje.
A chcem vám poďakovať všetci, opäť prišiel.
A veľa šťastia s vašimi záverečných prác.
Majú veľký deň.