>> [MÜZİK OYUN]
>> DAN AMRMENDARIZ: Herkes, CS50 seminer hoş geldiniz,
Swift ile iOS App Geliştirme.
Dan Armendariz değilim, ve ben bir hoca değilim Burada Harvard'da bilgisayar bilimleri.
>> Ve bir sonraki saat olacak kadar şeyler bir kasırga turu
Bu konu hakkında biz sığabilecek kadar.
Ben kaynak kodunun tüm yayınlayacağız Eğer çevrimiçi bugün göreceksiniz.
Biz mümkün olmayabilir aslında her şeyin üzerinde gitmek
Ben olduğumu olduğumu Bu saatte gösteren.
Ama en azından umarım aracılığıyla Kaynak kodunun yorumlar,
Eğer anlamaya çalışalım mümkün olacak neler Tam bu şeyler için oluyor
biz oldukça alamadım söyledi.
>> Genel yapı aşağıdaki gibi bugünün konuşma olacak.
Biz bazı temel yapıyor dışarı başlayacağız Swift dili ile sözdizimi,
daha gelişmiş bazı girecek Swift dilinin sözdizimi.
Çünkü dilin Gerçekten modern ve öyle
yüksek düzeyde bir yeri vardır özellikleri, biz değil şeyler
, CS50 boyunca C görülen veya hatta bazı diğer diller
Başladığımız ettik gibi PHP CS50 kullanarak,
bu yüzden denemek zorunda gidiyorum Ayrıca bazı konuları tanıtmak
yüksek seviyeli diller ile ilgili Eğer CS50 derinlemesine bakın olmayabilir,
ancak daha sonra göreceksiniz bilgisayar bilimi dersleri.
Yani bu olacak sıkıca paketlenmiş saat.
Ve beni çekinmeyin Eğer herhangi bir sorunuz varsa biliyorum.
Eğer ilgileniyorsanız Yani geliştirme yaparken
Swift ile, ya da gerçekten Herhangi bir iOS uygulaması geliştirme,
gereksinimleri bir çift vardır.
Her şeyden önce, kullandığınız gerekir Mac, örnekler çalışan
Bugün kullanıyor olacak ki, OS nispeten yeni bir versiyon
Bu durumda X. Ben X 10.5 koşuyorum.
İstersen 10.11 çalıştırıyor olabilir.
Ama her şey için gidiyoruz Daha sonra Xcode 7 ve ilgili görmek,
hangi son sürümü var Swift 2.0 Swift, evi.
Bu aslında bir güzel önemli bir ayrım.
Sözdizimi bir sürü vardır Oldukça önemli ölçüde değişmiştir
Swift 1,0 bazı durumlarda, Geçen yıl yayımlanan, hangi
Swift 2.0, hangi Sadece bu sonbaharda ortaya çıktı.
Yani biz Swift 2.0 göstermek için gidiyoruz.
Bir çok şey olduğunu Online arama
Ek almak için çalışıyoruz bir çok şey hakkında bilgi,
açıkça isteyebilirsiniz Swift 2 arama
yerine sadece düz eski Swift daha yapmak için Eğer sözdizimi doğru olsun emin olun.
>> Aslında, bu doğrudur.
Gelişme hızlı bir miktar var Swift dilinde oluyor
Apple piyasaya sürdü beri, sanırım Ne bir yıldan biraz fazla bir oldu
şimdi.
Ve her şey değişti dramatik o zaman.
Ve böylece hüsrana olmayın varsa, etrafta ararken
nasıl gerçekleştirmek için Swift veya konular için bazı örnek kodu kullanarak bir şey
ya da bir şey değil mi bu aslında Swift 2.0 üzerinde çalışmak.
Emin olun aradığınız özellikle bu sürümü için
Farklı etkilerini en aza indirmek için denemek için sürümleri ve şeylerin o sıralar.
>> Ben sadece bazı şeyleri işaret çalışacağım eski sürümleri için farklı olduğunu.
Ama dikkat etmek bir şey.
Muhtemelen olacak büyük baş ağrısı biri
Eğer Swift ile olacak bulgu olduğunu , hatta sadece eski kod örneği
Bir kaç ay, kullanmaya çalışıyor sizin daha modern projede.
Ve bu sadece basitçe çalışmaz.
Sen derleyici hataları alıyorsanız, sözdizimi hatalar, çılgınca şeyler her türlü.
Dolayısıyla, sadece sabırlı olun Bu ve umarım olacak
çok güzel bir deneyim Swift genel klasmanda ile.
>> Şimdi join-- aslında can ve umarım biz aslında hala bu year-- var
CS 50 'Apple App geliştirme ekibi, hangi
Eğer herhangi bir uygulama yüklemek için izin verecek hangi iOS cihazlarda oluşturun.
Yani bu adresten eğer bir göz atın Bunu yaparken ilgilendi.
>> Yani sadece bir çift Swift kendisi hakkında şeyler.
Bu derlenmiş bir dildir.
Ama bazı göreceksiniz Kullandığımız özellikleri
Bu biraz da kullanılmak üzere izin Bir yol da yorumlanır gibi.
>> Sözdizimi bir sürü ödünç C'den esaslı oluyor ve C ile yazılmış
Ve böylece biz göreceksiniz paketler bir yeri vardır
Mevcut bilgisinden C biz Swift liman olabilir ki.
>> Ancak işler vardır C dan çok farklı hale
Bu çok güçlü yazılır.
Otomatik bellek yönetimi var.
Sen zorunda değiliz malloc veya serbest hiçbir yerinde kullanın.
Bu genellik için tasarlanmıştır.
Yani diğer bir deyişle, onu kullanabilirsiniz Apple Watch bağlamlarda her türlü,
iPhone tüm yol OS X ve kadar Hatta bazı sunucular, hatta bazı betik.
Ama biz görürsünüz komut dosyası için destek
oldukça orada henüz gibidir diğer dillerde bulunmaktadır.
Yani büyük olasılıkla kullanarak olacak Bu özel geliştirme
Mac veya iPhone üzerinde.
>> Ve modern özellikleri bir yeri vardır.
Ve bu bir çok şey şeyler olduğunu Biz bugün ele denemek için gidiyoruz
ama aynı zamanda bizim konular açıkçası, Biz tüm dersler ayırabilirim.
Aslında olarak, CS 51, sunulan sonraki dönem,
Bu konularla ilgili bir çok duruluyor aşağıda tarif edilmiştir.
Yani bütün bir dönem geçirebilirsiniz Bunları anlamak.
Ama biz denemek için gidiyoruz onları geçmek için
en azından yeterli sen misin ne anlayabilir
Eğer baktığınızda oluyor Bir Swift programında
ve yolunuzu kesmek mümkün Nihai proje için içinden.
>> En iyi yollarından biri Şimdi yapabilirsiniz Bu konuda ek bilgi almak
Sadece Apple'ın aracılığıyla açıkçası Swift ile ilgili belgelere sağladı.
API'leri bir sürü var mevcut olduğu.
Ve bu sizin için iyi bir ana üs olduğunu Belirli şeylere bakmak için o sen
iOS karıştığı bir API ile yapmak istiyorum.
Için kamera kullanmak istiyorsanız, örnek, sen burada arıyorum başlamadan edebilirsiniz
ve aynı zamanda Google ve Stack kullanın Normalde yaptığınız gibi taşma.
>> Bu konuda herhangi bir sorunuz Biz sağ atlamak önce?
Pekala.
Hadi devam edelim.
>> Bunun için ilk önce, ben bir örnek dosya sayısı.
Ve ben adım denemek için gidiyorum nispeten hızlı bir şekilde aralarında.
Bu Swift için Hello World dosyasıdır.
Çok basit.
Yol daha fazla yorum var gerçek kod vardır daha vardır.
Gerçek kod olan dikkat hat 14 çok alt.
Bu baskı diyor.
Ve sonra bir işlev çağrısı.
Biz ona bir içine geçiyoruz Dize Merhaba CS50 çağırdı.
Hiçbir noktalı virgül var dikkat edin.
Hiçbir int main var dikkat edin.
Hiçbiri var Biz C. vardı cruft
Bu şekilde Swift kullanırken, Sadece bir metin dosyasında yazılı olduğu
ve sonra, benim bilgisayarda depolanan Ben derlemek ve çalıştırabilirsiniz.
>> Ben burada dikkat edin CS50 IDE kullanarak değil.
Bu ben varsayar çalışan ve ben OS X üzerinde olduğumu,
ve ben Xcode zaten yüklü olduğunu Bunun için sırayla bu makinede
Aslında işleve.
Ama bu sadece normal bir metin dosyası biz o zaman derleme ve düzenleme yapabilirsiniz.
Yani bu aslında nasıl çalıştığını görelim.
Ne derlemek istiyorsanız?
swiftc 1.swift.
Bir an ya da iki sonra, şimdi var olduğunu göreceksiniz
1 adlı bir dosya içine bu derlenmiş.
Ve şimdi bizim CS50 baskılı var, yerine bizim Hello World uygulaması.
>> Olarak başka bir şey fark iyi ki varsayılan olarak
Biz giriş yoktu / n yeni bir satır yazdırmak için.
Varsayılan olarak, baskı fonksiyonu ile Swift sizin için yeni bir çizgi yazdırır.
İsteğe bağlı ek iletebilirsiniz Parametre bunu değil bunu söylemek için.
Ama bu konuda daha fazla bilgi için Google.
Varsayılan olarak, baskı hattı yapacağız.
>> Pekala, devam edelim sonra bazı başka şeyler.
Peki biz aslında değişkenleri tanımlayabilirsiniz?
Biz kullanan var yapabilir iki yöntemden biri.
Ve ben istediğim bir söylemek İlk hakkında bu let tanımıdır.
Ve bu önemli etkin bir nedeni
ne yapıyoruz, bir sabiti tanımlayan olduğunu.
Biz bir değişken oluşturmak için gidiyoruz, ya da daha doğrusu sürekli olarak adlandırılan isim,
Bazı verilerinin-- kendisine temin Bu durumda, dize Dan.
Ancak bu let kullanılarak Anahtar kelime, biz diyorsun
Bu variable-- o ya Yine adı constant--
adı hiç değişmedi olacak.
Bu boyunca değişmez olacak Bu programın süresi
ya da bütün bağlamda süresi
o değişken mevcuttur.
>> Bu o zaman gerçekten önemli değil mi bazı veriler var
programınızda değişecek, ve çeşitli örnekler göreceksiniz
Biz kullanmak istediğinizde hakkında Diğer sözdizimi karşı let,
Eğer izin kullanmak o önemli Mümkün bu bildirimlerin çünkü
o dili değişmiş olacak değil,
ve aslında gerçekleştirebilirsiniz optimizasyonlar bir sürü
hızını artırmak ve Programınızın güvenliği.
Ve emniyet, ben izin vermeyeceğim demek çılgın hataları ile bu kazasında
Biz olabileceğini C. görmeye alışık
>> Sonra dize enterpolasyon kullanabilirsiniz Bir dize içinde bu saklanması.
Yani biz bu görebilirsiniz Baskı hattı, merhaba yazdırmak,
ve daha sonra eğik açık parens kullanılarak ve sonra benim değişkenin adı,
bu durumda sabit olarak, parantez kapatın.
Ben esasen o atıyorum Bu değişken olarak adlandırılan ismin içeriği
dize içinde ve sonra Orada sonucu yazdırmak.
>> Bu dosyaya başka bir değişiklik var ki ben çok üstünde, olması,
Bir shebang çizgi koymak temelde sadece belirtir
Ben kullanmak istiyorum Swift tercüman, hangi
Artık zorunda olduğu anlamına gelir Bu özel programı derlemek.
Ben sadece kendi komut gibi çalıştırabilirsiniz.
Ancak bunun arkasında, bu durumda, bir sahneler derlenmiş ve daha sonra varlık
yürütülüyor.
Bizim için sadece görünmez.
>> Pekala, devam edelim.
Yani hile biraz var sadece daha önce oldu.
Sana bu ben gösterdi Bir sabit tanımlayabiliriz.
Ve bunu yapmak için bazı verileri sağlayabilir.
Ancak bu durumda, ben yapmadım fark Aslında veri türünü belirtmek
öyle ki.
Ve çünkü var derleyici, Swift can
sadece tabanlı veri türünü anlaması Ben içine koymak verilere.
O bu değerlendirme olduğunu bildiği için Değişken burada, bu veriler doğru
Burada, bu bir dize olduğunu biliyor.
Ve böylece bu sabit adı bu nedenle hem de bir dize olacak.
>> Ama biz de açık olabilir var türü hakkında
biz kullanmak için gidiyoruz sabitler veya değişkenler
Bu sözdizimini kullanarak instead-- adı kolon Dize eşittir let
Bu durumda biz demektir Dan, sabit olarak adlandırılan adını tanımlamak için gidiyor.
Bu tip String olacak.
Ve değer Dan olacak.
Şimdi başka bir yol olduğunu Biz variables-- oluşturabilir
bu değiştirilebilir değişkenler olan biz, aslında, giderek demektir
bazen kendi içeriğini değiştirmek için bağlamda süresindeki
bu değişken biz defined-- olduğu var anahtar sözcüğünü kullanın yerine edelim.
Fakat yine de, varsayılan olarak, sürece biliyorsun bu verileri işlemek gerektiğini,
için izin kullanmayı deneyin performans iyileştirmeleri.
>> Bu durumda, o zaman can veri türünü belirlemek
biz içeride olmasını beklediklerini etiket olarak adlandırılan bu yeni değişken.
Bir dize olacak.
Ve biz o birleştirmek için gidiyoruz İki dizeleri birlikte dize merhaba,
ve dize ile temsil Değişken, ya da daha doğrusu sabit ismi.
>> Yani bu güzel çünkü biraz o biz gibi PHP olduğunu
çok kolay dize birleştirme var.
Biz otomatik gerekmez bellek yönetimi her türlü kullanımı
boyutunu artırmak ve yapılacak Orada komik şeyler herhangi bir tür.
Biz aslında beklediğiniz gibi çalışır.
>> Pekala, bu konuda herhangi bir sorunuz var mı?
>> Şimdi diğer nedeni biz yeteneğine sahip ihtiyacınız
Ne tanımlamak mümkün Veri değişkenlerin türü
bazen biz değil çünkü değişkenlerini başlatmak istiyor
bazı verilerle tanım noktası.
Bu durumda Yani, diyelim ki Ben girilmesi başlamak istiyorum
Bir sınıf defterine bazı notlar.
Peki biliyorum biri olduğunu Ben olmak istiyorum değişkenler
Bir kesilebilir notu olacak.
Ve biz de biliyoruz biz o bir tamsayı olmak istiyorum.
Ama belki biz henüz yok Bu sınıf kullanılabilir olması.
>> Swift, sen var veri türünü tanımlar
bir ile ilişkilidir Değişken veya sabit let
aslında can önce Bu değişken kullanabilirsiniz.
O kesinlikle yazılı olduğundan, Bir tür ilişkilendirmek zorunda
Bu değişkenler ile.
>> Ben düzgün değil ettik, bu durumda Yani Bazı değeri ile ilk başlatıldı,
Sonra ben Swift anlatmak için gerekenleri Ben veri türü olmasını bekliyoruz.
Ve kalması için gidiyor Aynı veri türü
Bu programın tarih boyunca.
>> Şimdi en kısa sürede cazip olabilir Ben bu notu değişken yarattık
ve bir mesafede eğer ben şimdi 100 tamsayı,
bitiştirmek için denemek istiyorum Bu tamsayı bir dize,
Hala kullanmak için cazip olabilir bu dize birleştirme operatörü
gibi biz sadece birkaç satır önce yaptım.
Ama ne yazık ki, Bu aslında olmaz
Eğer, çünkü çalışmak esasen performans
iki farklı bir çalışma.
>> Şimdi bu diğerinden çok farklı gerçekten PHP gibi diller
türlerinin kendi tür loosey goosey.
Onlar sadece, evet, gibi konum neyse, umurumda değil.
Bana bir tür verin ve belki doğru olanı yapacağım.
>> Bu durumda, çabuk görür türleri hakkında son derece sıkı
sizinle ilgileniyor.
Bu toplama operatörü veya birleştirme operatörü
esasen bir çift var farklı olası seçenekler.
Sen toplamı yapabilirsiniz tamsayılar, veya sizinle
dize birleştirme yapmak ve olabilir belki bazı başka şeyler de.
Ama bu operatör kabul etmezse bunun her iki yanı üzerinde ne,
ya da bu kombinasyonu oldukça İki tip, o bekliyor ne değildir,
o zaman bir arızaya neden olacak.
>> Bu durumda Peki, bu ne anlama geliyor bir dize artı bir tamsayı var?
Peki bağlamında Bu, muhtemelen istiyoruz
bir dize birleştirme işlemini yapmak.
Ama tabii bilgisayar bağlamda bu tür yoktur.
Ve böylece biz sağlamanız gerekir Bu ek bilgi
onu ne bildirmek için Yapmak istediğimiz olmasıdır.
>> Diğer bir deyişle, aslında Yani Swift kesinlikle yazılı olduğu
Eğer bir yapmak zorunda anlamına gelir ek iş biraz
bunu çalıştırmak için almak için sen-cekti istemek yolu.
Ancak sonuç olarak, bu daha güvenlidir.
Ve bir kez almak bu tür hesap içine
şeyler sadece açıkçası başlangıç Oldukça iyi çalışmak.
>> Bu durumda, biz o zaman olur Yani dize birleştirme gerçekleştirmek
açıkça döküm Bir dize tamsayı
Bu onu sararak Sermaye S Dize işlevini,
ve sonra Dize bitiştirmesi kullanılarak Operatör, bizim etiket değişkeni değiştirmek için
ve sonra çıktı.
>> Şimdiye kadar, çok iyi?
Pekala, geçelim.
>> Şimdi veri çeşitli vardır Biz Swift kullanabileceğiniz türleri.
Eğer alışmış gibi, Biz kesilebilir dizi oluşturabilirsiniz.
Ve bu dizi sadece can Tek bir türü içerir.
>> Yani bu durumda, biz oluşturmak için gidiyoruz tamsayılar bir değişken diziler, hangi
Biz notları arayacak ve biz mümkün olacak Bu kare aralığındaki o saklamak için
senin gibi biçim alışık büyüdüğümüz Diğer dillerde çeşitli için.
Ama biz konum burada fark birkaç şey tanımlayan.
notları bir değişken olduğunu variable-- Biz let anahtar sözcüğünü kullanın.
Anlamına Yani biz o zaman değiştirebilirsiniz Bu dizinin içeriği.
Bu tip Array Int olduğunu ve biz bunu söyleyebilirim
Burada bu köşeli parantez dayalı.
>> Güzel şeyler şimdi bir Bu konuda biz ise
bir sürü erişimi ek bilgi
dizi hakkında sadece kullanma Bazı basit nokta notasyonu.
Yani, örneğin, grades.count bize sağlar
Bu mevcut öğe sayısı biz sonra oldukça erişebilirsiniz dizi,
basitçe bu nokta gösterimi kullanılarak.
>> Ek eklemek istiyorsanız Bu diziye öğeler,
PHP stili yapamaz burada sadece açıkça tanımlamak,
Belirli bir dizindeki bazı değer Eklemek istediğiniz söyledi.
Bunun yerine, ekleme, kullanımı Dizi türü yöntem
Bu listeye, bu madde, 95 eklenecek.
>> Yani şimdi bu dizi aşağıdaki vardır 100, 0, 90, 85 contents--.
Ve şimdi biz ekli ettik Bu 95 de.
>> Başka yolları da vardır Bir şeyleri ekleyebilirsiniz.
Aslında kullanabilirsiniz Bir toplama operatörü,
bu olarak yorumlanacaktır Bir dizi ekleme işlemi.
Ve sonra başka ekleyebilirsiniz içerikleri 70 ve 80 olan dizi,
Bu diziye.
Yani şimdi var Bu değişkende içeriği
100, 0, 90, 85, 95, 70, ve 80 grades--.
Bu sadece güzel bir söz dizimi olan Swift bize sağlayan şeker.
>> Biz toplamak istiyorsanız Yani sınıflarda, belki sen
yineleme istediğiniz olacak Bu döngü her öğenin üzerinde.
Ve biz Swift, kavramı, var a döngüsü için beklediğiniz gibi.
Ama biz işaret yolu Bir aralık biraz farklıdır.
Bu durumda, Yani Her şeyi Özetle, biz olacak
Geçici oluşturmak için gidiyor Bizim için sırayla değişken olarak adlandırılan toplamı
Bu sayımı korumak için.
>> Ve bizim için uyarı Burada döngü yapımı.
0 ayında endekste için .. <grade.count.
Yani bu yapı, 0 .. <grades.count biz bir dizi operasyon
Biz yaratmak için gidiyoruz diyerek 0 up tamsayılar bir dizi
ancak grades.count hariç.
Yani bu olacaktır, 0, 1, 2, 3, 4, 5, yukarı Ancak birçok biri kadar
grades.count önce.
>> Yani bu nasıl farklıdır biz döngüler için genellikle kullanılan ediyorum
Bazı indeksi olurdu nerede Değişken, ilk 0'a eşit olarak ayarlayın
ve daha sonra bazı kadar bu entegre öğelerin sayısı daha az değer
Bu dizide.
>> Yani değişiklik var Bu sayede, aslında,
hangi bize çok kolay sağlar aralıkları farklı ayarlayın.
Bu aralık için değiştirirseniz Üç nokta, 0 ... grade.count,
Bu aralığını temsil 0 dahil grades.count için
Bu dizi de olduğu anlamına gelmektedir o aralıkta yer.
>> Ama bu çok kullanışlı tam bu şeyler için,
Biz yapmak zorunda olduğunda döngü üzerinde yineleme
Bu endeksler sıfır endeksli çünkü, diğer dillerde gördüğümüz gibi
de.
For döngüsü bu konuda herhangi bir soru var mı?
>> Yani örtülü tanım var Bu indeks değişkeni,
kimin değeri 0 başlar ve Her döngü tekrarında devam eder
Bir noktaya kadar 1 kadar artması bu, grades.count eşittir
hangi noktada, döngü iptal eder.
>> Bizim dizesinde dikkat edin Burada İnterpolasyon,
biz aslında bazı basit gerçekleştirebilirsiniz Bu değerlere manipülasyonlar.
Yani endeks artı 1 aslında olacak Bu değerin bir toplamı gerçekleştirmek
göstergesi olduğu üzere Bu durumda, bir tamsayı.
Ve bu noktada, o olacak daha sonra bir dizeye dönüştürülür
ve burada bu dizeye interpolasyon Biz beklediğiniz gibi ve yazdırılır. .
>> Ve güzel bir şey diziler hakkında burada
biz de var edebiliyoruz getiriliyor değerler ve ayar değerleri
köşeli ayraç notasyonu olarak kullanarak biz de diğer dillerde gördüm.
>> Pekala, buradan, biz şimdi çok Bizim notlarının tüm bizim toplamını hesaplamak.
Şimdi çeşit sonraki mantıklı bir adım olacaktır
bulmak için bir bölme işlemi yapmak için Bu notların ortalamasının dışında.
Ama önemli bir şey Buradaki hangi
Bu miktar, belki bir tamsayı olmasıdır.
Ama biz bazı gerçekleştirmeniz gerekir çift ​​bölünme tür.
Ve bu olacak zaman son derece önemli
Bu işlemi gerçekleştirmek istiyorum, Biz ne söylediğini, çünkü
biz aslında ihtiyaç vardır iki çift üzerinde bölünme gerçekleştirin.
Ve yine, Swift çünkü çok güçlü yazılan,
Biz açıkça tüm ayarlamanız gerekir çiftler için öğeleri biz önce aslında
Bu işlemi gerçekleştirmek.
>> Sırayla bize Yani çift ​​bölme işlemlerini,
Sadece bir için yeterli değil bu öğelerin bir çift olması.
Her ikisi de bir olmak zorunda hızlı sırayla çift
Bu emin olmak için bizim yapmak istediğimiz budur.
Yani biz o zaman açıkça typecasting olacak Yukarıda hesaplanan ettik toplamı
ve çiftlerde için notlarının sayısı ve o operasyon ve mağaza gerçekleştirmek
bu yeni bir değişken haline, ya da daha doğrusu Ortalama olarak adlandırılan bu yeni sabit
ne tür hayal hangi olacak?
Çift, evet.
Bu durumda, bu yüzden biz Bunu belirtmek zorunda değilsiniz
Bu çıkarılabilir çünkü Veri ortalamasının operasyon ne tür
olacak.
Ve Swift genellikle oldukça iyidir yaklaşık türlerini anlaması edememek.
>> Bunu görmek istiyor musunuz koşmak ya ben taşıyabilirim?
Ben devam etmek istiyorum.
Bu herhangi herhangi bir sorunuz var mı?
Büyük.
>> Şimdi almak için başlamak için gidiyoruz İyi stuff-- tanımlayan fonksiyonları,
ve diğer türde bir çift Swift özgü değil var
Diğer dillerde görülen Bu noktaya kadar,
ancak diğer mevcut daha sonra bulabileceğiniz dilleri.
Bunun için ilk önce isterseniz bir işlev tanımlamak için,
Eğer korkak kelime ile tanımlamak fonksiyonu ve daha sonra işlev adı,
ve daha sonra parantez içinde, argümanlar Bu o işlev kabul etmek istiyorum.
Argümanlar da gerekir specify-- generally--
Ayrıca veri türünü belirtmeniz gerekir Onlar varılabilir sürece vardır.
Ve biz o küçük görürsünüz Sadece biraz içinde ihtar.
>> Yani bu durumda biz bir var işlevi printGradeCount denir.
Biz kabul edeceğiz variable-- doğrusu bu durumda,
Bir constant-- gradebook çağırdı.
Ve bunun olacak tamsayılar dizisi yazın.
Şimdi bir şey var Burada çok önemli
ben anlamak istiyorum.
Bu varsayılan olarak, bu argümanlar olduğunu Bu işleve girdiler vardır ki
örtülü bir let anahtar sözcüğüyle tanımlanan ki ben bunu değiştirmek anlamına gelir
Burada gradebook değişken.
Ve bu tür, mantıklı Eğer veri geçirerek çünkü.
Ve belki de istemiyorum sizden altından değiştirilecek.
Bu açıkça söz etmek mümkündür Bu değişken koyarak olduğu
Burada var anahtar sözcüğü.
Ama bu biz ettik bir gotcha olduğunu fark insanlar geçmişte yapmış
Onlar gidiyor farz olduğunu Bir değişken zaman, aslında,
bir sabittir.
>> Pekala, işte o zaman, bu durumda, Biz herhangi bir geri dönüş türünü belirten değildir.
Biz nasıl yapılacağını size göstereceğim sadece bir an o.
Ama biz burada fark koşulu eğer sadece basit.
Not defteri ise boş bu değer,
Bu tamsayı sadece özelliğidir Dizi, o zaman bir şeyler yazdırmak.
Aksi takdirde başka bir şey.
>> Oldukça basit, şimdiye kadar sanırım.
Herhangi bir sorunuz varsa Ama beni durduramaz.
>> Şimdi bu fonksiyonu, ortalama, aynı zamanda alır Bazı argümanlar, daha doğrusu tek argüman,
not defteri ve bu zaman olan Çift türü dönmek için gidiyor.
O bilgisayar Çünkü ortalama ve bu kadar
aslında geri gidiyor Çağıran hattına bilgisayarlı ortalama.
>> Bu durumda, belirttiğimiz ok sonra türü dönün.
Ve bu hissedebilirsiniz ilk başta garip tür.
Sen alışık büyüdüğümüz dönüşü ayar
işlevin adından önce yazın.
Ama bu düşünüyorsanız matematik açısından,
gibi matematik varsa bir işlev tanımlamak,
Bazı bir işlevi var girişler ve bir çıktı üretir.
Ve bu tam olarak ne var Bu taklit etmek gerekiyordu.
Ve diğer dillerin bir çift var Bu, aynı zamanda benzer bir sözdizimi var
ama muhtemelen hiçbiri Eğer CS50 gördüm.
Ama yine de onun tarafından karıştırılmamalıdır olmayın.
Ok neler oluyor demektir Bu durumda döndürülebilir.
Tamam, bu yüzden nasıl gidiyoruz Bu ortalama hesaplamak için?
Peki, eğer gradebook boş, iyi o zaman sen
hangi belki, 0 iade edecek makul bir şekilde bu tedavi.
Ben en gelsin, bilmiyorum geri o biraz biraz.
Bu aslında olmayabilir Makul bir yolu olmalı
ortalama halinde hesaplamak için Boş bir gradebook var.
>> Sonra biz sadece bizim toplamı gerçekleştirmek gerekir.
Biz aslında burada edin Bir alternatif sürümü var
Bize yineleme olanak döngü için Dizideki her bir öğenin üzerine
ve her öğe yerleştirmek Kendi değişkene.
Içinde sınıf için belirterek gradebook, ne diyorsun
örtük gidiyoruz olduğunu adında yeni bir sabit oluşturmak
temsil edecek sınıf gradebook her benzersiz kalemi
Her zaman o döngü yinelenir.
İlk kez böylece o çalıştırılır, sınıf olacak
gradebook ilk öğe olacak.
İkinci kez olacak İkinci öğe, böylece ve benzeri
not defteri sahip olana kadar elemanların kendini tüketti.
Sonra o Özetle mümkün olacak Bizim toplama değişkene notu
ve bizim ortalama dönüş biz daha önce görmüştüm.
Tamam, herhangi bir sorunuz var mı?
Evet?
İZLEYİCİ: Ben iki soru var.
Birincisi, varsayımsal, can Eğer bu bir tamsayı çalıştırmak?
Bir olmak zorunda değil mi çift, doğru mu?
DAN AMRMENDARIZ: Can sen Bu soruyu tekrar?
İZLEYİCİ: Ben yapabilir miyim ortalama olarak tamsayı?
DAN AMRMENDARIZ: Can sen ortalama olarak tamsayı mı?
Yani bir tamsayı döndürür bir çift yerine ortalama?
>> HEDEF KİTLE: Sizi Return-- şu an aşağıda var.
DAN AMRMENDARIZ: Sağ burada, 0.0 dönün?
HEDEF KİTLE: Evet, sadece 0 döndürür.
Yani o da olacak 80 ya da 85, ancak 85.2.
>> DAN AMRMENDARIZ: Yani bu durumda, böylece birkaç farklı yolu var
Buna cevap.
Beni sırayla cevap vereyim.
Ben sadece bu dönüş yapmak eğer öyleyse 0, 0 bir tamsayı değeridir.
Ve böylece bir neden olur Bu durumda tip hatası
o bir çift bekliyor çünkü ama sonra bir tamsayı dönüyor.
Ben bir tamsayı dönmek istiyorsanız, ben yapamam.
Ben dönüş türünü ayarlayabilirsiniz , int burada 0 dönmek için,
ve çift bölme işlemlerini değil.
Ama sonra olurdu tamsayı bölme yapıyor.
Ve böylece biz o zaman almak olmaz biz muhtemelen beklediğiniz ortalama.
Ama evet, biz değiştirebilirsiniz bu şekilde türleri.
>> HEDEF KİTLE: Ve ikincisi, seni üstüne bir Double var.
Ama aşağı aşağıda, sizi Çift Çift dönüş yapmak,
otomatik olarak zaten Çift biçimi dönen.
Neden hala bunu tanımlamak gerekiyor Bir çift ile üst ok?
>> DAN AMRMENDARIZ: Yani durumunda bu parçasıdır
bir Şeyin yüzden, soru tekrarlamak bunun karşılığında örtük çünkü
Burada tipleri, ne tür bu aslında , biz Swift ile açık olması gerekir
biz istediğimiz hakkında Bu işlevin dışında iade
o tip gerçekleştirdiğinde, böylece kontrol, bu emin olabilirsiniz
biz aslında ne yazdım o Aşağıdaki aşağı aslında uygundur.
Yani bir çek gibi çeşit var Durumun kendinle tür.
Ama mudur
>> HEDEF KİTLE: [duyulamaz] ok?
>> DAN AMRMENDARIZ: vakalar zaman vardır biz örtük can belirtebilirsiniz
dönüş türünü ayarlayın.
Ancak bu durumda, I do not Bunun işe yarayacağını düşünüyorum.
Diğer bazı sözdizimi var daha sonra görürsünüz.
>> Pekala, bu kaynak Kod biraz farklı
Bu argümanları ayrıştırır, çünkü Biz aradığınız işlevi.
Nasıl çalıştığını sana göstereyim biz aslında geçmeden önce
bazı ilginç şeyler O Swift oluyor.
>> Bu durumda Yani, eğer ben sadece bu koşmak ne yaptığını kodu fark
Bu-- süre, bu tür Bana garip bir hata veriyor.
Ben bunu birkaç geçmesi gerekiyor Bir komut satırı argümanı olarak tamsayılar.
Yani, 150 ve 80 görelim ve Enter vurmak aslında ne yaptığını öğrenmek için.
Bu her kabul ediyor tamsayılar olarak bu değerler.
Bir not defterindeki içine giren ediyor.
Ve o zaman performans gösterdiğine ortalama hesaplama
ve biz beklediğiniz gibi olduğunu çıktısı.
>> Ama açıkçası bir şeyler oluyor var Bu reddetme şey üzerinde
bir tamsayı olarak bir şey.
Biz ne zaman hatırlayacaksınız edebileceğiniz gibi komut satırı argümanları ile ilgili
İlk C ve diğer dilde, Bu komut satırı argümanı 0-inci öğesi
Liste komutu adıdır biz aslında idam söyledi.
Bu durumda, ben sadece döngü ediyorum tüm komut satırı argümanları bitti.
Ama fantezi her türlü yapmıyorum ilki olduğunu atlamak için kontrol edin.
Ben sadece açıkça değilim ya da ben değilim dolaylı Bu tür olan kontrol
tamsayılar aslında ben daha önce olduğu Bu hesaplama gerçekleştirin.
>> Ve bu esas olarak var: burada ne oluyor.
Her argüman için işlemin argümanları,
Bazı denetimi gerçekleştirmek için gidiyorum.
Ve bu durumda, ben gidiyorum İlk dönüştürmek için denemek için
bir tamsayı içine argüman tarafından açık typecast yapılması,
o girişinde, bir dize, çünkü olup bir tamsayıdır Aslında.
>> Ama bu garip sözdizimi tür, izin notu Int (argüman) eşitse.
Gerçekte ne oluyor Burada son derece olduğu
senin kullanarak Swift önemli.
Bu ne kullanıyor İsteğe bağlı tip denir.
>> Yani bu fonksiyon, Int (argüman), sadece bir tamsayı, ama döner döner
Ne isteğe bağlı bir tamsayı denir.
Ve böylece bu tür bir bir tür üst kısmında bir türü.
Sen çeşit gibi hayal edebiliyorum Bir paketin gibi dönüyor.
Ve bunu açtığınızda Paket, o da
sonuç bir tamsayıyı sahiptir, ya da hiç o kesinlikle ilgisi yoktur.
Ve bu bir hata denetimi olarak yararlıdır mekanizması nedeniyle bu durumda
Biz öğrenebilirsiniz, bu oldu türü dönüştürme başarılı?
Bu ise, daha sonra aslında içeride bir tamsayı olacak.
Aksi takdirde bazı sahip olacak biz nil arayacağım değer olan
hiç bir tamsayı temsil eder.
Gerçekten hiçbir şey temsilcisi bulunuyor.
>> Ve böylece eğer bu inşaat bize bu paket unwrap sağlar,
bağlayıcı olduğunu opsiyonel.
Ve biz o unwrap mümkün olup olmadığını paket ve içinde bir tamsayı bulmak,
Sonra ne diyorsun Burada biz o zaman olacak olan
bu değer olarak ayarlanmış olması için izin sınıf olarak adlandırılan bu sabit.
Ve eğer ifadenin bu kısmı, eğer açıklamada üst kısmı
çalıştırmak çünkü edecek unwrap başarılı oldu.
>> Sadece bu yüzden Eğer bu gerçekleşirse Bir hata belki orada
Bu açık tip dönüşüm Belki, bir tam sayıya bir dizeden
örneğin değer ABC var.
Ve aslında gidiş değil bir tamsayı dönüştürmek için.
Daha sonra, nil döndürür hangi bir tamsayı değildir.
Ve eğer bu deyimi de o başarısız.
Çünkü yok edecek notu hiçbir tamsayı içeriğe sahiptir.
Ve bunun yerine bu başka bloğu çalışacaktır.
Evet?
>> İZLEYİCİ: Nil N-I-L?
DAN AMRMENDARIZ: nil yes, N-I-L.
>> Yani bu belki biri Swift hakkında en zor şey,
Eğer konum özellikle iOS app üzerinde otlar
ve aslında çalışıyoruz Orada bazı geliştirme yapmak için.
Bu bağırıyor için gidiyor yaklaşık opsiyonel sana.
Bunun için size soruyor gidiyor soru işaretleri ve ünlem işaretleri.
Ama eğer sen konrtol anlamaya bir kez bulmaktan biraz zaman ayırmaya
Ne isteğe türleri ile oluyor Kendinize baş ağrısı bir çok tasarruf edersiniz
Eğer çalıştığınız kadar Swift bir uygulama yazmak.
>> Aslında çok güçlü bir özellik.
Ve sadece gerekecek Şimdilik bunun için benim sözüme.
Ama biz bu inşaat görürsünüz ve bazı diğerleri like it
Diğer kaynak kodun bazı o Biz sadece biraz içinde size göstereceğim.
>> Herhangi bir başlangıç ​​soruları burada var mı?
Yani önemli paket bir olduğunu İsteğe bağlı tip metatype tür.
Ya, bir değere sahiptir ve o, sonra yaparsa
belki ilişkili olduğu değere sahip olacaktır onunla, ya da hiçbir değeri yoktur,
ve nil ile temsil edilir.
Bu geri kalanı belki de Beklediğiniz gibi.
>> Yani kadar rampa edelim Zorluk yine.
Ve bu sefer, biraz bir göz atalım gerçekten var diğer veri türleri.
Bunlardan biri olan sözlükler Python sözlükleri çok benzer.
Bir hash tablosunda biraz benziyor C. Bu aslında anahtarlarının bir eşleme
nerede tuşları dizeleri olabilir.
Ve o anahtarları baktığınızda, Bu tuşlar değerine sahip olacaktır.
Bu yüzden oldukça bir dizi değil ama bunun yerine, daha yakından ilişkili
karma harita ya da bir karma tablo.
>> Şimdi bu sözde nasıl görelim Aslında biz önce çalışmak için
kaynak koduna kendisi gitmek.
Ben sadece bu çalıştırırsanız, hiçbir şey gerçekten olmuyor.
Ben bekliyorum o bana söylüyor Aşağıdaki Çeşidi bazı parametreler.
Yani sağlamak için gidiyorum bazı sorun ayarlamak isimler,
yani pset0, belki ben 100 aldım.
Ve pset1, ben bir 5 var.
Ve sonra sınavda, ben Gerçekten de yaptım ve 30 aldım.
Ve hop, ben burada bir boşluk çarptı.
>> Ben Enter vurduğunuzda görebilirsiniz bazı hesaplama yapmaktadır.
Bu gradebook üç olduğunu söylüyor sınıflarda, pset1, pset0, sınav.
Ve gradebook vardır bu özel ortalama.
Yani yine, biz çalışıyoruz Bu gradebook düşüncesi ile,
ama biz iterating devam edeceğiz Bizim fonksiyonunun karmaşıklığı ile.
>> Başlangıcında Yani, biz sadece konum bir işlevi oluşturmak için gidiyor o
kullanım yazdırmak için sorumludur.
Ve bu çıkış var hangi edecek fonksiyonu sadece
zorla uygulamadan çıkın.
Bu bir şey olmadığını iOS uygulaması kullanır.
Bu, bu durumda, sadece Bir komut satırı argümanı ile.
Sonraki biz Xcode doğru hareket başlayacağız.
Ancak bu bir komuta özgü Swift çizgi stili programı.
>> En bazılarına bir göz atalım Burada ilginç şeyler.
En sadece bir çift, görelim ilginç şeyler belki söz
Bunun zaman fonksiyonu olan notların sayısını yazdırırken,
Eğer ben o listeyi olduğunu hatırlamak olabilir items-- pset1, pset0 ve sınav.
Aslında hızlı yapabilirsiniz ve kolayca bunu
Bir olan gradebook, alarak anahtarlar ve değerler vardır sözlük.
Anahtar bütün geçer bul Burada nokta tuşları yöntemi,
ve daha sonra, bu joinWithSeparator kullanımı Daha sonra tuşları bütün alacak
Biz yazmışsınız ki pset1-- veya üzgünüm, pset0, pset1 ve exam--
ve onları bir arada birleştirmek Virgül ve bir boşluk kullanarak
Uzun bir dize oluşturmak için.
Bu birleştirme işlemi sadece olağanüstü olduğunu çeşitli bağlamlarda yararlıdır.
Ve böylece bu joinWithSeparator olduğunu.
>> Ve bu var bir şey Swift 1 Swift 2 değiştirildi.
Bir olmak için kullanılır Python style-- sen eğer
Python-- bir Python aşina tarzı dizeleri yöntemini katılın.
Ama bu artık Swift 2 durumda.
İsterseniz bu kullanmak istiyorsanız şeyler bir dizi bitiştirmek için
Birlikte bir dize ile.
>> Yani belki de bizim o daha önce ortalama tartışılması,
o biraz daha mantıklı Bizi ortalama işlevini ayarlamak için
yerine isteğe bağlı bir çift olmak için sadece açık bir iki katından.
Biz vardı çünkü olağandışı durum nerede,
Ne gradebook aslında eğer Bunun içinde hiç değerlere sahip?
Ne ortalama getiri gerekir?
>> Belki C sen bir şey yapmış olurdu
gibi, bir nöbetçi değer verilen benzeri 0.0 ya da belki negatif bir sayı,
ya da bir şey sadece gerçeği temsil bazı hata koşulu olduğunu
ve belki de aslında yok Bu ortalamayı hesaplamak için yeteneği.
Peki bir belirterek güzellik İsteğe bağlı tip yapmak olacaktır.
Ve ben şimdi tüm bu sözleri söyleyerek, ancak kulüpler Bu aslında Opsiyonlar kullanmaz.
Ama biz sadece o görürsünüz Biz ortalama ayarlayabilirsiniz dakika
Böylece isteğe bağlı veri türü olması aslında daha sonra bazı veriler, dönerse
biz bu verileri dönecektir.
Aksi takdirde biz dönecektir nil, bu söyleyerek
anlamlı hesaplama vardır.
>> En başka bir şey geçelim.
Buradan Yani, biz bakarak oldum Komut satırında bütün bu örnekler.
Ama gerçekten gidiyoruz ile başa çıkmak için Xcode olduğunu.
Ve hakkında güzel şeylerden biri Xcode ve özellikle Swift,
Bu olmasıdır şey Playground çağırdı.
Ve Bahçesi olduğunu tüm iOS app.
Ama bunu denemesini sağlar Çok kolay bir şekilde Swift ile.
Eğer tüm kodu yazabilirsiniz.
Bu güzel burada vurgulanan sözdizimi.
Eğer yeni bir dosya oluşturduğunuzda, bu soracaktır Eğer bir Playground oluşturmak istiyorsanız.
Ama Playground hakkında güzel bir şey Bu, pencerenizin sağ tarafta
aslında size göstermek yok kodundan çıktı.
Ben aşağı doğru ilerleyin Yani, ne görebilirsiniz çeşitli kod satırları çıkışı
Aslında olması umulur.
>> Bu durumda, bu yüzden biz gidiyoruz Tarif birazcık değiştirmek
ve gerçekten bir şey hakkında konuşmak Bu üst düzey şekilde önemli
Swift, onu ve işlediğini kilitler bu fikir.
Ve muhtemelen bu gördüm JavaScript biraz.
O sizin bunun için CS50 olduğunu kapaklar
yapmanın çok popüler, çok iyi bir yoldur Modern dilde üst düzey şeyler.
Ama aynı zamanda bir tür zor İlk defa başınızın etrafında sarmak.
Bu bakarak Yani İlk kez, sorun değil.
Sadece kaynak koduna bakmak ve görmek evde bunu anlamaya eğer.
>> Bu durumda Yani, diyelim biz Çin'li bir sürü oluşturmak istiyorum
bazı sabit değer ile.
Yani bu durumda ben bir işlev oluşturabilirsiniz.
Ben güç aramak için gidiyorum Hayatta 2 tek amacı
Bazı giriş ve çift almaktır o, ve bu değeri döndürür.
Ben burada dikkat edin Verilerin bir tür kabul.
Bu x adında bir değişken olacak.
Bu tip Double var.
Ve ben burada Çift dönmek için gidiyorum.
Ve ben sadece yapacağım Çok, açıkçası, oldukça
Bu değeri iki katına naif bir yol.
Ve seni neden bu göstereceğim Bir saniye içinde yararlıdır.
>> Bu dizi var burada edin tekrar. 1 bir şey, nokta için
yani dot dot, 2, Bu döngü iki kere çalışacaktır.
Ama bu bir kukla değişken temsil eder.
O gerçekten gitmiyorum demek her yerde bu değişken kullanarak
Bu döngü içinde.
Ben sadece bu çizgiyi istiyorum kod iki çalıştırmak için,
bilmek gerek kalmadan bu aralığın değeri.
>> Bu durumda ben sonucu koşuyorum Yani Zaman olan esas olarak iki kez, x
Bu değer karesi ediyorum demektir.
Ve bu olur Biz beklediğiniz gibi çalışır.
2 Güç, bir değer geçirerek 2.0 bize 4 bir çıkış verir.
10.24 3.2 çalışır.
>> Şimdi benzer bir yapabileceğimiz 3 güç bir şey.
Ama şimdi sadece aralığını değiştirmek.
1 kukla değişkeni için 3'e kadar, 3 kez çarpın
ve aynı şeyi yapmak.
>> Yani bu biraz yapmacık hissedebilirsiniz.
Ama önemli bir var Burada bir şey ki
Bu bakarak olduğunu iki fonksiyon, var
farklı tek şey, bu dizi bu değerdir.
Bu iki hakkında her şey fonksiyonlar, 3 güç ve 2 güç,
, aslında, aynı nedeniyle aynı şekilde çalışır.
>> Bu noktada, küçük yüzden Alarm zili gidiyor olmalıdır.
Umarım dediğini, bilirsin, bu biraz hissediyor
çaba çoğaltılması gibi.
Belki bir yol olduğunu isterim var Tüm bu kapsülleyen mümkün
ve işlevi sağlamak veya bir işlev oluşturmak
Tam ben olmadan ne istediğini yapar açıkça yazın dışarı gerek.
Ve bu ne güç olduğunu Bir kapağın yapmamızı sağlar.
Yani bu bir göz atalım.
Ve ben bir çift harcayacağınız Bu konuda dakikada bu çünkü
Swift için oldukça önemlidir.
Biz bu her zaman görüyorum.
Biz bir işlev tanımlamak için gidiyoruz.
Bu powerOf çağrılacak gidiyor.
Bu kabul gidiyor parametre türü Int y denir.
Ama dönüş türü bir göz atın.
Dönüş türü olarak, bir Parantez, Çift Çift ok.
Bu fonksiyon, yani bu fonksiyon powerOf,
bir işlev geri dönüyor.
Bu bir Çift kabul ediyor ve Çift dönen.
Yani o çılgın tür gelebilir, ama en biraz aşağı kaydırma izin
ve ne olacağını görmek için sabırsızlanıyoruz.
Bu fonksiyon powerOf içinde konum.
Biz yeni bir fonksiyon oluşturuyoruz exponentiator denilen
ama bunun ne önemi yok.
>> Bu olduğunu fark x bir giriş değeri.
Ve bir Double alıyor ve Çift dönen.
Ve bu aynı kod olduğunu biz 2 değeri hariç, yukarıda gördüğümüz
3 ya da değer, o bu aralıkta bağlı üst,
ile değiştirilmiştir y bu değer, burada
İlk parametre olduğu Bizim powerOf fonksiyonunun.
Ve bu noktada, biz exponentiator döner.
Biz fonksiyonu dönen ediyoruz.
>> Bu tür küçük bir zihin üfleme gibi.
Ama ne düşünelim Ben bu işlevini çağırdığınızda powerOf
ve 2 gibi içine bazı değer geçmektedir.
Bunun anlamı olduğunu Ben şimdi değere sahip
Bu değer anlamına gelir y 2, Bu exponentiator fonksiyon y
Bu değer 2 olacaktır.
Ama bu geri veriyorum exponentiator işlevi.
>> Yani Swift I ne diyor fark Bu durumda oluşturduk.
Kare, bir tanım var let Bir Çift kabul eden bir işlev
ve Çift döndürür.
Ben bir işlevi oluşturduk kareler bir şey olduğunu
Burada bu mekanizmayı kullanarak.
Ve gerçekten neler olduğunu bu fonksiyon geri olduğu
exponentiator, ancak bu değer y bunun içinde sarılır.
Ve şimdi her zaman bunu kullanın Değişken veya sabit olarak adlandırılan bu
kare, o gidiyor bir fonksiyonu olarak davranmaya.
Ve bu yüzden o değişken çağırabilirsiniz gibi bir işlevi çağırır,
ve içine bir sayı geçmesi, Bu durumda 3 gibi.
Ve ben o zaman bu değer kare olacak.
Yani 3 sonra olacak karesi Burada gördüğünüz gibi, 9 olur.
>> Gerçekten deli, ama bu artık Bana fırsat veriyor
Diğer powerOf işlevler oluşturmak.
Ben tamam, şimdi de ben istiyorum, söyleyebilirim gibi Yeni bir işlev oluşturmak için, powerOf (3),
ve içine saklamak sürekli olarak adlandırılan küp.
Ve şimdi küp olacak Daha sonra olacak ayrı fonksiyonu
girdi ve küp gibi bazı değer alması Biz alt satırında gördüğünüz gibi değer
İşte.
2 küp 8 neden oluyor.
>> Umarım oldukça düzgün şeyler.
Bunu daha önce hiç görmemiştim.
Ben kapanışları içine bakmak için teşvik ve biraz daha bu araştırmak.
Biz çok güçlü bir şeyler gerçekten görecek JavaScript ve diğer bazı dillerde.
Bu gerçekten çok önemli olduğunu yanı sıra API'leri anlamak
biz sadece bir saniye içinde elde edeceğiz.
Evet?
>> HEDEF KİTLE: Ne zaman yapmak powerOf (2), parantez, ve sonra
Başka bir parantez bir input-- temelde kare yerine ediyoruz.
DAN AMRMENDARIZ: Yani bak Burada çok son satırında.
Aslında tamamen mümkün Eğer önerdiği gibi zincirleme bunu.
Yani powerOf (5) gidiyoruz demektir Burada 5 bir exponentiator var.
Yani bu temelde olacak Beşinci güç 4 aynı şey,
biz exponentiating yarattık çünkü Beşinci güç işlevi,
ve biz içine geçiyoruz Bu değeri 4 çalışır.
Ve biz bu değeri elde biz 1024 bekleyebilirsiniz söyledi.
HEDEF KİTLE: Ve bu değil o kolaylaştırır, böylece isim
ne olursa olsun kare okumak için.
>> DAN AMRMENDARIZ: Doğru, aynen.
Ben sadece bunu koymadan önce Yani burada çok sabit içine
o yapılan o kadar kolay adını kullanmaya.
Evet?
>> İZLEYİCİ: Bu bağlamda powerOf, bu parçası
programlama dilinin Bu arada size karşı
[duyulamaz] içinde powerOf düşünüyorum?
DAN AMRMENDARIZ: Yani bu durumda, powerOf
basitçe adı Ben burada tanımlı fonksiyon.
Yani doğal değil dil kendisi,
ancak bunun yerine, bu sadece bir işlev
Bu isim ben bunu o isim verin çünkü.
Başka soru?
Pekala.
>> Şimdi bu harika.
Ama bir görmeye gitmiyoruz kapatma fonksiyonları çok o
tanımladığınız içinde nerede, bu gibi tek işlevi, başka fonksiyonun.
Ve bunu yapabilirsin.
Ama bu tür değil gerçekten gerekli, değil mi?
Ben bu tanımlamak neden gibi işlevi çağrılır exponentiator
ve hemen ardından geri.
Neden olamaz ben sadece hemen Bu fonksiyonu dönüş?
>> Ve aslında, bu tam da denilen bir kavram arkasındaki fikir
Anonim fonksiyonlar, Anonim işlevler aslında yok
çünkü onlar bir isim var bir tane gerekmez.
Böylece bu durumda, 7B'de, Biz tam da bulabilirsiniz.
Bu, aynı kodu tam olarak aynı şeyi yapar
ama şimdi o kadar hafifçe değiştirdik bu powerOf fonksiyon hemen
Bir işlevi döndürür.
Döndükten sonra dikkat edin, Açık kıvırcık parantez var.
Bu girişi Çift bekliyor.
O çıktı Çift bekliyor.
Ve sonra anahtar kelime kod kendisi ayırır.
Yani bu bir anonim bir işlevdir.
Aslında, oysa bir adı yok önce exponentiator denirdi.
Ama biz sadece gerçekten, gördüğümüz gibi exponentiator bakın vermedi
Bu işlevin dışında.
Yani önemli değildi.
Yani bu anonim bir fonksiyondur isimsiz olduğu sözde
ama yine de kullanılan ediliyor Bu kodun bağlamında açıklanmamıştır.
>> Ben önümüzdeki birkaç olanlar Umarım devam edecek
Aklını biraz üfleme.
Biz bu daha da kolaylaştırabilirsiniz.
Zekice olarak nedeniyle daha önce işaret
belki biz aslında tarafından, biliyorum Bu koddan çıkarım ne
Bu kodun çıktısı olacak.
Ve aslında, bu anonim fonksiyon, Biz aslında veri türlerini çıkarabiliriz.
>> Yani bu bir, biz artık Açıkça tanımlamanız gerekir
davranıyor veri türü Bu işlevi, giriş ve çıkış
nedenlerle bir çift için.
Bir biz yukarı, tanımladığınız olduğunu parça işlevi prototipi
veri bu anonim ne tür Fonksiyon giriş ve çıkış olmalı.
Ve diğerinden biz kodundan çıkarabileceği
Buraya biz kabul ettiğinizi Çift türüdür girişi
ve Çift dönen.
>> Biz açıkça değil var burada dikkat edin argümanların isimlerini tanımlanmış
bu işlev kabul ediyor.
Ve bu yüzden biz başvurabilirsiniz bakın $ 0 $ 1 kullanarak bu parametreler,
böylece vb bağlı olarak kullanılan parametrenin numarası
Bu işlevi.
>> Bu gidiyorsun şey Bir sürü bu açık kıvırcık parantez görmek için
tanım ardından 0 $ ve daha sonra bazı operasyon,
ve daha sonra kapalı kıvırcık parantez.
Bu bir anonim bir fonksiyondur bu işlemi gerçekleştirir.
Bu parametreyi nerede var bu tip olayla konumdur.
Bu ilk parametresi $ 0'dır.
Ve bazı operasyon Bu $ 0 oluyor.
>> HEDEF KİTLE: Dolar işareti So temelde parametreyi demektir
ve 0 ilki demektir?
DAN Armendariz: Doğru.
Yani dolar işareti temelde anlamına gelir Parametre ve 0 birincisini demektir.
Ama spesifik olarak çalışıyor Ben adında değil bu durumda
Benim anonim işlevinde argümanlar.
>> HEDEF KİTLE: Perl falan var mı Orada bu dolar işareti, dolar 0?
DAN Armendariz: Üzgünüm, hangi mı?
HEDEF KİTLE: Perl var mı Bu dolar 0, dolar 1--
DAN Armendariz: Ben değilim Perl ile çok tanıdık,
ama PHP nedir değişkenleri tanımlar Dolar işaretleri dayalı.
Ve bazı diller olabilir Bu gibi özelliklere sahip olduğunu.
Aslında, Swift ödünç bir Bu gibi özellikler çok
Diğer dillerde bir sürü gelen.
Biz bunun içinde Python ipuçlarını görebilirsiniz.
Bu tip tanımlaması OCaml geliyor gibi görünüyor.
Ve biz sadece bir sürü var farklı dil sürü şeyler.
Bu güzel biri Swift hakkında şeyler
en iyi bir sürü alır ki dil demet fikirler
ve hepsini bir araya ayakkabı çekecekleri tek süper dile.
Aslında, eğer beni izin Aklını üfleme devam
bu yüzden tüm bu yapıyorum.
Biz belki bu biraz kolaylaştırabilirsiniz Tabii ki gerçekleştirerek bit,
Swift bir exponentiating vardır fonksiyon inşa.
Ben Darwin, içe aktarırsanız hangi Sadece kütüphane olduğunu
Şimdi, bu işlevi çağrılır pow özellikleri Ben işlevi Gücümü kolaylaştırabilirsiniz
Aşağıdaki olmak.
Bu iade olacak Bu anonim işlev.
>> Ama bu şimdi ne kadar basit bakmak.
Bu bir anonim işlev olduğunu veri çeşit kabul ediyor,
ve biri olacak argüman özel olarak ise,
tipi Double olduğunu $ 0 başvurulan.
Bu bir tür çift geri gidiyor.
Ama return deyimi Şimdi örtülü.
>> Ve bu tam tarzı olduğunu , Swift çok yaygındır
darmadağın.
Biz bu görmeye gidiyoruz Swift her zaman.
Yani bu, tüm gösteren kulüpler Bu sözdizimi nedeniyle.
Bu çok yaygın Bunu anlamı, görmek için
bir anonim bir fonksiyondur Bu gerçekleştiriyor
Bu argümanların bazı çalışma.
Ve bir örtülü dönüş yoktur.
Yani kesinlikle aynı şey Bizi burada, bu demek için.
>> Bu Kıvırcık Çünkü aparatı, bir fonksiyonudur
Bu işlemi gerçekleştirmek konum ilk argüman üzerinde.
Biz geri gidiyoruz.
Ama bu dış dönüş bütün o işlevi dönen,
o bütün anonim işlev biz sadece oluşturduğunuz ettik.
Başka soru?
Pekala, ben bilmiyorum Siz, bu hazır
ama biz Swift bile deli gidebilirsiniz.
Hazır mısın?
Tamam, bu harika.
>> Şimdi biz aslında yeteneğine sahip için, Swift, çünkü nasıl modüler bir
protokol tabanlı nasıl ve karşı olduğunu Kendi lanet operatörleri tanımlar.
Bu durumda gibi, biz hiçbir iyi exponentiation-- operatör,
şey yetkilerini gerçekleştirmek için.
Ama ben, Swift, yeni tanımlayabilirsiniz tam da bunu yapar operatör.
Yani bu durumda var Burada sözdizimi bir demet.
Ve seni ona bakmak için izin verirsiniz evde bu baktığınızda.
Ama biz bu infix tanımlıyoruz Operatör, **, bu daha sonra, bize izin verecek
ne anlama tanımlayarak fonksiyonu ** aslında
sol elini kabul etmek etmez tarafında ve sağ taraftaki,
ve daha sonra bunun üssü dönmek için sağ tarafına sol taraf.
>> Ve şimdi birdenbire I tüm Yeni pay oluşturduk.
Yani 2 ** 3 üncü güce 2 anlamına gelir.
[ZİHİN ÜFLEME SES] Tarafından kendisi, sen gibi yapmak gerekir
Tamam, vida C. ben gidiyorum Swift tüm yol.
Bu harika.
Bu güzel harika.
>> Gerçi bu büyük bir örnektir.
Ama bir kez dışında asla Bu örnekte, aslında
Kendi operatörü tanımlamıştır.
Ama yine de, bu gösterir Swift gücünün çok
ve bu aslında neden Gerçekten çok güzel.
Tamam evet?
HEDEF KİTLE: Eğer konum Kendi operatörü tanımlayan
Eğer yanlışlıkla bilmiyorsanız nasıl denemek ve bu bir operatöre oluşturmak
C bir yerlerde gibi Swift yerde gizli,
bilinmeyen bir gibi size daha önce görmemiş olabilirsiniz.
>> DAN Armendariz: Eğer çalışıyorsanız yüzden Kendi operatörleri tanımlamak için,
tanımlama riski vardır Varolan operatör üzerinden bir.
Bu ayrıntı seviyesinde olduğu gider Biz üzerine gitmek için zamanımız olduğunu sanmıyorum.
Ama bu bir risktir.
Ve bu çok nedeni aslında Ben şapka sembolü kullanmak vermedi
İktidarı dışarı yazarken, genellikle 4 küçük şapka 5 veya bir şey kullanmak
bunun gibi, sadece biz olduğunuzda Arkadaşları ya da her neyse Gchatting.
Ama bu durumda, aslında bir çarpışma neden olurdu.
Ve bu yüzden, sırf bu kaçınılması Ben bu durumda bilmek oldu
o çarpışmaya neden olacağını söyledi.
>> Pekala.
Şimdi, ne yazık ki, için Son yedi dakika
Ben üfleme tutmak zorunda senin kafasında biraz.
Bu yüzden sana göstermek için izin Bazı başka şeyler de.
>> Biz size bu fikri gösterilir ettik Bu anonim fonksiyonları olan,
size izin bu kapaklar tür etrafında fonksiyonlarını geçmektedir.
Bunları dönebilirsiniz.
Bunları işleyebilirsiniz.
Sen delisin şeyler her türlü yapabilirsiniz.
>> Ama bir başka şey yararlı olur
yeteneği, karşı koymak için olduğu gibi bu işlevleri dönen
bir işlev, bir işlevi geçmek başka bir işleve parametre olarak.
Dünya'da neden iyi düşünce olabilir Ben böyle bir şey yapmak istersiniz?
>> Peki, ben istiyorum diyelim Bu operatörü almak ben
çalıştı çok zor oluşturmak ve uygulamak Farklı sayıların bir demet o
Bir dizideki.
Yani bu durumda ben bir dizi var 1, 4, 7, 2, 5, 10, 56 integers--.
Ve ben hepsini ikiye katlamak istiyoruz.
Yolu, biz genellikle olur Sadece yazmak için yapmak
döngüsü için basit olduğunu bunların hepsi üzerinde dolaşır
ve çeşit gerçekleştirmek Üzerlerine kare operasyon,
Yeni içine bu yeni değerler girerek Değişken, daha doğrusu, burada yeni bir dizi.
Ve çıkış değeri Sonuç, daha sonra bu dizilerin hepsi
ya da daha doğrusu bunların hepsi elemanları şimdi karesi.
>> Ve biz aynı yapabileceğini Bunu cubing için bir şey,
ama biraz alarm zili gerektiği kapalı olacak
belki orada olduğunu söyleyerek Bazı yolu biz olur
Bu biraz basitleştirmek mümkün.
Ve aslında yoktur.
Ne oluşturabilir eğer Bizi sağlayan bir işlev
Bir avcı, bir fonksiyonu olarak kabul etmek?
Bu durumda Yani, almak Bu argümanların bak.
Biz çiftler listesini kabul gidiyoruz.
Ve sonra biz gidiyoruz Bir işlevi kabul etmek
Bu f adında bir değişken gidiyor Bir Çift alıp bir Çift dönün.
Ve bütün çıkış tüm bu fonksiyon
denilen Eşleyicisi gidiyor çift ​​adında bir dizi döndürür.
>> Bu daha sonra bana izin verecek neler yapmak liste üzerinde yineleme için
ve şimdi aynı şeyi, ama Her o işlevi uygulamak
Bu listedeki tek tek değerlerin.
Yani gerçekten ne f bilmiyorum.
Benim için fark etmez.
Ama çift alır müddetçe, bunun üzerine bazı işlemi gerçekleştiren
ve daha sonra, bir döner Çift, ben o zaman olurdu
karşısında bu işlevi harita mümkün Listedeki her öğe.
>> Ve programlama bu tür denilen yüksek dereceli fonksiyonlar,
nerede fonksiyonları geçiyoruz etrafında parametre olarak
ve fonksiyonları ile şeyler yapıyor.
Bu bu tüm almak gibi çeşit Biz CS50 öğrendim fikirler
ve sıralama onları alarak bir sonraki seviyeye.
Ve bu tüm CS51 tarzı şeyler.
Ve böylece biz derinlemesine gidersiniz Böyle sınıflarda daha.
>> Fakat bu aynı zamanda Burada önemli çünkü biz
fonksiyonları bir sürü görmek Swift kullanılmasını
Bu esas olarak yapar Bu, nerede var
Bazı sayılar, sayılar bazı dizisi.
Biz geçmek gidiyoruz Bizim eşleştiricisinden içine dizisi.
Ve biz de gidiyoruz Bazı işlevi, pas hangi
biz zaten burada tanımlanmış ettik.
Bu kare olacak.
Ve biz o gidiyoruz Bu sayıların her kare
ve burada bu sonucu içine depolar.
>> Yani bu durumda biz tanımladığınız bizim Kendi fonksiyon haritası denir.
Ama tam bu şey, Aslında, Swift yerleşik.
Çeşitli ve vardır fonksiyonlar harita denir.
Bir harita işlevi var, Bir fonksiyonu azaltmak var,
ve bir filtre işlevi var, esasen fonksiyonları uygulandığı
Bir tek her elemanı Bir şekilde onları değiştirmek için liste.
>> HEDEF KİTLE: Eğer dönüştüren beri Yani Başka bir biçime verileri
Bir function-- yoluyla
DAN Armendariz: Doğru.
Evet, bu yüzden fonksiyonu biz kabul ediyoruz o
bir şekilde veri dönüştürüyor.
Bu durumda, ya da vardı Bunu karesi, ya da biz bunu cubing edildi
ya da gerçekten, biz gerçekleştirebilir tüm üzerinde hiçbir işlem.
>> Ama ben o zaman bu nasıl sana göstereyim Uygulamada bakmaya gidiyor.
Ve yine, ben koşuyorum zaman biraz. bu yüzden değilim
üzerinden tüm gitmek mümkün olacak burada ayrıntılı olarak kaynak kodu.
Ama bunu yapmak için teşvik ediyoruz.
Biz en kısa sürede bunu göndeririz bu mümkün konuşmadan sonra.
>> Ama bu bir göz atın eğer, Biz numaralarının listesini olduğunu varsayalım,
Bu sayı dizisi Değişken olarak adlandırılan numaralar.
Sonra bu gerçekleştirmek istediğiniz Bu numaraları filtre işlemi.
Yani filtre yüksektir Sipariş fonksiyonu olduğunu
Ayrıca bir dizi ve bir işlev kabul eder.
Ve bu her öğe üzerinde Dizi, o işlevi gerçekleştirir.
>> Bu fonksiyon dönerse Gerçek, bu öğeyi tutar.
Bu işlev false döndürürse, o öğeyi atar.
Ve sonra bir listesini döndürür o zaman tüm oluşur
filtrelenen bu öğelerin.
>> Yani başka bir deyişle, bu Aynı düşünce, gradebook.
Biz notlarının çeşitli olabilir Bu değer denilen numaralar içine.
100 ve 70, ve olabilir 40, vb ve benzeri.
Ne bu filtre yaptığı uyarıdır Bu, sözdizimi kuralları şeker olduğu
isimsiz fonksiyonu için.
Bu söyleyerek anonim bir fonksiyondur ben kabul ediyorum parametre
Bunun ise, olacak 70 daha büyüktür
o zaman bu, yani gerçek dönecektir Bu öğeyi Bu filtre tutulacaktır.
Yani biraz olsun Bu konuda daha somut.
Ben sayıların bu dizi varsa ve 100, 70 ve 40 oluşur
Bu filtreyi gerçekleştirmek Bunlardan her biri üzerinde çalışma.
Böylece ilk 100 bu değerdir.
100 eşit ya da daha büyük bir 70 doğru olan
100 tutulur demektir Bu dizinin bu yeni kopyası.
70, aynı zamanda geçer.
Ama 40 değil.
Peki passingCount ne döndürülür elemanların 100 ve dizi 70--
100, virgül, 70.
Bunlar sadece iki vardı tutuldu öğeler.
Ve böylece nedeni çabuk geçti yüksek düzenin bu tür bir sürü
Bu ortak çünkü şeylerdir Eğer Swift oldukça göreceksiniz şey
Sık sık, bazı işlemler gerçekleştirirken Bu anonim işlev sözdizimi kullanarak.
>> Bazı güzel şeyler var.
Anahtarlar, Swift gerçekten güçlü Ben sadece deli, deli güçlü gibi yani.
Sen anahtarını kullanabilirsiniz ve aslında bunları uygulayabilirsiniz
tür deli aralıkları için, ve böyle süslü şeyler.
>> Ama son birkaç dakika içinde, Ben oldukça uzak ileride atlamak istiyorsanız
ve size nasıl belirli bir örneğini göstermektedir Biz Swift kullanarak iOS app oluşturabilirsiniz.
Peki ne zaman yaptığınızı Bu, sizi gerekecek
Bir Apple'ın üzerinde at-- bakmak dokümantasyon, onlar
Gerçekten iyi öğreticiler bir şey var İlk uygulamayı oluşturmak için.
Ve ben yapmaya teşvik onlar sizi çünkü
Neyin tüm adımları tam aracılığıyla Bir iOS uygulama oluşturmak için tıklayın.
>> Ama burada biz bu iOS uygulaması var.
Ve bu oldukça basit bir uygulama gerçekten.
Ben bu çalıştırırsanız, bana göstereyim Eğer neye benzediğini.
Aslında yaptığı tüm is it internet JSON dosyasından çeker
ben bir sunucuda depolanan var.
Ve bu JSON dosyası izin görüntüleri tanımlayan
Bana üzerinde aracılığıyla sonra döngüsü için benim app, benim web sunucusundan görüntüler.
>> Yani burada getNextImage var.
Bu, internetten bir görüntü yükler ve ardından ekrandaki görüntüler.
>> Yani çok basit.
Ama burada amaç göstermek için biz şeyleri birleştirmek nasıl
CS50 ikinci birkaç hafta gerçek bir IOS uygulamasına.
Başka bir deyişle, belki birisi de Eğer yapmak isteyeceksiniz şeyler
Bir IOS uygulamaya sahip olduğunu internetten veri indirebiliriz
ve kullanıcıya bazı bilgileri gösterir.
Yani tamamen noktasıdır Burada bu kaynak kodunun.
>> Yani hakkında söylenecek çok şey var nasıl gerçek iOS geliştirme yapmak için.
Çılgın sözdizimi bir çok şey var biz oldukça henüz görmedim
Bir sınıf gibi, bir sınıf aslında budur.
Biz büyük ölçüde göz ardı edebilirsiniz şimdilik bu.
>> Ama biz içerdiği olduğunu fark Bu bir çok şey içinde
biz zaten böyle gördüm Belirli adlara sahip işlevler.
Ve biz o verdiğinizde Doğru isimleri fonksiyonları
aslında, IOS ile beklenen Bu biraz büyülü hissediyor.
Ama bir oluşturduğunuzda IOS uygulaması vardır
Belirli fonksiyon isimleri olduğunu telefonun kendisi tarafından çağrılan
Uygulama denemek için yüklenirken olarak aslında süreç oluşturmak için
Başvurunuzu çalışır.
Yani yine bir çok şey var ki ben Bizim için sırayla buraya geçiştirmeye zorunda
Bu konuda özellikle konuşmak için.
Ama belki bakmak için teşvik Diğer iOS seminer, aynı zamanda bazı
yapmak öğreticiler çevrimiçi bir tanımlamanın çok daha iyi bir iş
ayrıntılı bilgi.
>> Ama biz birkaç şey görebilirsiniz Burada kodundan ilginçtir.
Biz ifadeleri eğer var dikkat edin.
Bu arada, çok önemli bir ifadeleri hakkında eğer bir şey
olduğunu etrafında parantez Boole ifadesi isteğe bağlıdır.
Ama kaşlı, isteğe bağlı değildir ne kadar az ya da kod kaç satır
Eğer bir if deyimi var.
Sen ifadeleri ise bir olamaz Swift kıvırcık parantez olmadan.
>> Ve bu, iyi, çeşit aptalca.
Ama bu tarihsel nedenleri var.
Kendiniz kurtaracak gerekiyordu.
Örneğin bu gibi yapamazsın etrafında küme ayraçları ortadan
if.
Bu, aslında gerekmektedir.
Yani etmenizi öneririz şuna bir bak.
Ama bir tane daha var Ben istiyorum inşa
Swift hakkında size göstermek için bu karşılaştırıldığında Swift 2.0 için yeni bir
Swift eski sürümleri için, Hangi şudur.
Ben buraya koydum nereye Bakalım?
>> Yani bu fonksiyon denir fetchJSON, bu işlev
bu JSON çekme sorumludur sadece bu yüzden olur bir URL dosyasını
Benim CS50 IDE çalışıyor olması.
Ben sadece, Apache başladı Orada benim JSON dosyasını koymak,
ve ben o çekin mümkün değilim kullanarak internetten veri
Bu işlev ve bu URL, Hangi telefon tarafından sağlanmaktadır.
Bu tarafından sağlanan var kütüphane kullanmak olduğunu
Bazı iOS uygulaması geliştirme yapıyoruz.
>> Bu sıradışı olduğunu burada edin sözdizimsel yapı görevlisi çağırdı.
Ve gerçekten bu olduğunu Swift doğrulama yoludur
bazı şeyler var sizden önce karşılandı
fonksiyonun geri kalanı ile devam edin.
Yani kullanarak olabilir Bu isteğe bağlı tip,
Ben URL'yi tarafından bulduk Bu NSURL fonksiyonu çalışıyor
ve bir URL içine saklamak Sabit ve daha sonra kontrol
URL nil olmadığını görmek için ona çünkü İsteğe bağlı türünü geri gidiyordu.
Nil Ve eğer, o zaman yapardım Bir hata çıktı ve sonra geri dönün.
>> Ama bunun yerine ne bekçi sağlar Bize, çok şey yapmak
ancak olduğundan emin olun Aslında durum bu url
Düzgün NSURL tarafından kurulmuştur.
Ve daha sonra, eğer Bu atlar ve
Eğer devam etmek sağlayacak url düzgün tanımlanmış olan.
Ancak bu durumda ise, bu url düzgün tanımlı değil,
Bu işlev bir hata döndürür eğer ya da başka bir şey beklenmeyen
Aslında, bu koruma yapıyı meydana daha sonra çıkış bu hata bize izin verir
ve hemen dönün.
Evet?
>> HEDEF KİTLE: Yani tür bir o else if gibi?
DAN Armendariz: Bu tür bulunuyor Bir evet, o zaman else if gibi
Bu url sonra olması dışında Bu aşağıda her şey için tanımlanmış.
O zaman o, bu bekçi geçerse aslında verilerle dolu olacak
ve geri kalan kullanılabilen senin işlevi kaynak kodu.
O yüzden gidiyoruz şüpheli hem de bu nöbetçi görmeye başlarsınız.
Ve bu dikkatli olun.
>> Yani sadece diğer bir çift bakarak şeyler, burada bu hakkın ne olduğunu,
sizce, sadece ne dayalı Daha önce hakkında konuşuyorduk?
>> HEDEF KİTLE: listede edeceğiz düşünüyorsunuz?
>> DAN Armendariz: Yani yakın.
Bu, tanımlıyoruz bir fonksiyonudur.
Ve biz bu işlevi giren vardır Burada bu işleve argüman olarak.
>> HEDEF KİTLE: nil [duyulamaz] değilse.
Yani doğru, listede var?
>> DAN Armendariz: Hata nil değilse, böylece ben ilerlemek zorunda bu--.
Peki, gerçekten, en göremiyorum let Burada sağa ilerleyin.
Hata ediliyor bir argümandır Bu anonim işleve geçirilen.
Bu bir anonim bir işlevdir.
Bu adı yok.
Ama biz bu üç kabul edilir argümanlar, veri tepki ve hata.
Ve o kadar geçersiz dönmek için gidiyor bir şey geri gitmiyor.
Ve bu içeriği olan Bu işlevin.
Ve sonra biz bu içinde erişim Bu argümanların her işlevi.
>> Yani bir kasırga var Dilin turu.
Ama bu birlikte umut, umarım almak gibi
Öğreticiler bazıları bir göz Swift ile iOS gelişimine özgü,
Eğer gitmek özellikle Apple'ın geliştirici web page--
onlar gerçekten iyi bir şey var öğreticiler Başlamak için.
Ama konuşurken umarım sadece bu saatte sözdizimi hakkında kendisi verdi
Eğer yeteri kadar bununla başlamak için.
>> Biz bu kaynağın tüm yayınlayacağız Seminer sitesinde kodu
en kısa sürede, hem de slayt olarak böylece herkes için bir başvuru var.
Senin projeleri ile Ama iyi şanslar.
Ve geldiğiniz için hepinize çok teşekkür ederim.
>> [ALKIŞ]