1 00:00:00,000 --> 00:00:03,332 >> [MÜZİK OYUN] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Herkes, CS50 seminer hoş geldiniz, 4 00:00:09,590 --> 00:00:11,690 Swift ile iOS App Geliştirme. 5 00:00:11,690 --> 00:00:15,690 Dan Armendariz değilim, ve ben bir hoca değilim Burada Harvard'da bilgisayar bilimleri. 6 00:00:15,690 --> 00:00:21,510 >> Ve bir sonraki saat olacak kadar şeyler bir kasırga turu 7 00:00:21,510 --> 00:00:25,160 Bu konu hakkında biz sığabilecek kadar. 8 00:00:25,160 --> 00:00:29,170 Ben kaynak kodunun tüm yayınlayacağız Eğer çevrimiçi bugün göreceksiniz. 9 00:00:29,170 --> 00:00:31,990 Biz mümkün olmayabilir aslında her şeyin üzerinde gitmek 10 00:00:31,990 --> 00:00:34,810 Ben olduğumu olduğumu Bu saatte gösteren. 11 00:00:34,810 --> 00:00:37,580 Ama en azından umarım aracılığıyla Kaynak kodunun yorumlar, 12 00:00:37,580 --> 00:00:40,830 Eğer anlamaya çalışalım mümkün olacak neler Tam bu şeyler için oluyor 13 00:00:40,830 --> 00:00:42,950 biz oldukça alamadım söyledi. 14 00:00:42,950 --> 00:00:46,970 >> Genel yapı aşağıdaki gibi bugünün konuşma olacak. 15 00:00:46,970 --> 00:00:52,820 Biz bazı temel yapıyor dışarı başlayacağız Swift dili ile sözdizimi, 16 00:00:52,820 --> 00:00:56,290 daha gelişmiş bazı girecek Swift dilinin sözdizimi. 17 00:00:56,290 --> 00:00:59,560 Çünkü dilin Gerçekten modern ve öyle 18 00:00:59,560 --> 00:01:02,110 yüksek düzeyde bir yeri vardır özellikleri, biz değil şeyler 19 00:01:02,110 --> 00:01:06,600 , CS50 boyunca C görülen veya hatta bazı diğer diller 20 00:01:06,600 --> 00:01:09,310 Başladığımız ettik gibi PHP CS50 kullanarak, 21 00:01:09,310 --> 00:01:12,670 bu yüzden denemek zorunda gidiyorum Ayrıca bazı konuları tanıtmak 22 00:01:12,670 --> 00:01:18,580 yüksek seviyeli diller ile ilgili Eğer CS50 derinlemesine bakın olmayabilir, 23 00:01:18,580 --> 00:01:21,380 ancak daha sonra göreceksiniz bilgisayar bilimi dersleri. 24 00:01:21,380 --> 00:01:25,290 Yani bu olacak sıkıca paketlenmiş saat. 25 00:01:25,290 --> 00:01:28,897 Ve beni çekinmeyin Eğer herhangi bir sorunuz varsa biliyorum. 26 00:01:28,897 --> 00:01:30,730 Eğer ilgileniyorsanız Yani geliştirme yaparken 27 00:01:30,730 --> 00:01:34,442 Swift ile, ya da gerçekten Herhangi bir iOS uygulaması geliştirme, 28 00:01:34,442 --> 00:01:35,900 gereksinimleri bir çift vardır. 29 00:01:35,900 --> 00:01:39,940 Her şeyden önce, kullandığınız gerekir Mac, örnekler çalışan 30 00:01:39,940 --> 00:01:43,880 Bugün kullanıyor olacak ki, OS nispeten yeni bir versiyon 31 00:01:43,880 --> 00:01:46,580 Bu durumda X. Ben X 10.5 koşuyorum. 32 00:01:46,580 --> 00:01:48,600 İstersen 10.11 çalıştırıyor olabilir. 33 00:01:48,600 --> 00:01:52,430 Ama her şey için gidiyoruz Daha sonra Xcode 7 ve ilgili görmek, 34 00:01:52,430 --> 00:01:56,271 hangi son sürümü var Swift 2.0 Swift, evi. 35 00:01:56,271 --> 00:01:58,270 Bu aslında bir güzel önemli bir ayrım. 36 00:01:58,270 --> 00:02:01,510 Sözdizimi bir sürü vardır Oldukça önemli ölçüde değişmiştir 37 00:02:01,510 --> 00:02:05,890 Swift 1,0 bazı durumlarda, Geçen yıl yayımlanan, hangi 38 00:02:05,890 --> 00:02:08,514 Swift 2.0, hangi Sadece bu sonbaharda ortaya çıktı. 39 00:02:08,514 --> 00:02:09,889 Yani biz Swift 2.0 göstermek için gidiyoruz. 40 00:02:09,889 --> 00:02:13,020 Bir çok şey olduğunu Online arama 41 00:02:13,020 --> 00:02:18,040 Ek almak için çalışıyoruz bir çok şey hakkında bilgi, 42 00:02:18,040 --> 00:02:20,710 açıkça isteyebilirsiniz Swift 2 arama 43 00:02:20,710 --> 00:02:24,950 yerine sadece düz eski Swift daha yapmak için Eğer sözdizimi doğru olsun emin olun. 44 00:02:24,950 --> 00:02:26,920 >> Aslında, bu doğrudur. 45 00:02:26,920 --> 00:02:31,210 Gelişme hızlı bir miktar var Swift dilinde oluyor 46 00:02:31,210 --> 00:02:35,110 Apple piyasaya sürdü beri, sanırım Ne bir yıldan biraz fazla bir oldu 47 00:02:35,110 --> 00:02:36,370 şimdi. 48 00:02:36,370 --> 00:02:39,080 Ve her şey değişti dramatik o zaman. 49 00:02:39,080 --> 00:02:42,160 Ve böylece hüsrana olmayın varsa, etrafta ararken 50 00:02:42,160 --> 00:02:48,310 nasıl gerçekleştirmek için Swift veya konular için bazı örnek kodu kullanarak bir şey 51 00:02:48,310 --> 00:02:51,210 ya da bir şey değil mi bu aslında Swift 2.0 üzerinde çalışmak. 52 00:02:51,210 --> 00:02:53,790 Emin olun aradığınız özellikle bu sürümü için 53 00:02:53,790 --> 00:02:58,690 Farklı etkilerini en aza indirmek için denemek için sürümleri ve şeylerin o sıralar. 54 00:02:58,690 --> 00:03:02,470 >> Ben sadece bazı şeyleri işaret çalışacağım eski sürümleri için farklı olduğunu. 55 00:03:02,470 --> 00:03:03,970 Ama dikkat etmek bir şey. 56 00:03:03,970 --> 00:03:06,770 Muhtemelen olacak büyük baş ağrısı biri 57 00:03:06,770 --> 00:03:11,010 Eğer Swift ile olacak bulgu olduğunu , hatta sadece eski kod örneği 58 00:03:11,010 --> 00:03:14,050 Bir kaç ay, kullanmaya çalışıyor sizin daha modern projede. 59 00:03:14,050 --> 00:03:15,430 Ve bu sadece basitçe çalışmaz. 60 00:03:15,430 --> 00:03:18,530 Sen derleyici hataları alıyorsanız, sözdizimi hatalar, çılgınca şeyler her türlü. 61 00:03:18,530 --> 00:03:21,580 Dolayısıyla, sadece sabırlı olun Bu ve umarım olacak 62 00:03:21,580 --> 00:03:24,200 çok güzel bir deneyim Swift genel klasmanda ile. 63 00:03:24,200 --> 00:03:28,430 >> Şimdi join-- aslında can ve umarım biz aslında hala bu year-- var 64 00:03:28,430 --> 00:03:30,910 CS 50 'Apple App geliştirme ekibi, hangi 65 00:03:30,910 --> 00:03:34,680 Eğer herhangi bir uygulama yüklemek için izin verecek hangi iOS cihazlarda oluşturun. 66 00:03:34,680 --> 00:03:39,190 Yani bu adresten eğer bir göz atın Bunu yaparken ilgilendi. 67 00:03:39,190 --> 00:03:41,450 >> Yani sadece bir çift Swift kendisi hakkında şeyler. 68 00:03:41,450 --> 00:03:43,580 Bu derlenmiş bir dildir. 69 00:03:43,580 --> 00:03:45,870 Ama bazı göreceksiniz Kullandığımız özellikleri 70 00:03:45,870 --> 00:03:50,650 Bu biraz da kullanılmak üzere izin Bir yol da yorumlanır gibi. 71 00:03:50,650 --> 00:03:56,350 >> Sözdizimi bir sürü ödünç C'den esaslı oluyor ve C ile yazılmış 72 00:03:56,350 --> 00:04:00,400 Ve böylece biz göreceksiniz paketler bir yeri vardır 73 00:04:00,400 --> 00:04:04,450 Mevcut bilgisinden C biz Swift liman olabilir ki. 74 00:04:04,450 --> 00:04:07,290 >> Ancak işler vardır C dan çok farklı hale 75 00:04:07,290 --> 00:04:08,860 Bu çok güçlü yazılır. 76 00:04:08,860 --> 00:04:10,380 Otomatik bellek yönetimi var. 77 00:04:10,380 --> 00:04:13,170 Sen zorunda değiliz malloc veya serbest hiçbir yerinde kullanın. 78 00:04:13,170 --> 00:04:15,110 Bu genellik için tasarlanmıştır. 79 00:04:15,110 --> 00:04:19,480 Yani diğer bir deyişle, onu kullanabilirsiniz Apple Watch bağlamlarda her türlü, 80 00:04:19,480 --> 00:04:26,290 iPhone tüm yol OS X ve kadar Hatta bazı sunucular, hatta bazı betik. 81 00:04:26,290 --> 00:04:28,400 Ama biz görürsünüz komut dosyası için destek 82 00:04:28,400 --> 00:04:31,360 oldukça orada henüz gibidir diğer dillerde bulunmaktadır. 83 00:04:31,360 --> 00:04:34,930 Yani büyük olasılıkla kullanarak olacak Bu özel geliştirme 84 00:04:34,930 --> 00:04:37,060 Mac veya iPhone üzerinde. 85 00:04:37,060 --> 00:04:40,150 >> Ve modern özellikleri bir yeri vardır. 86 00:04:40,150 --> 00:04:43,380 Ve bu bir çok şey şeyler olduğunu Biz bugün ele denemek için gidiyoruz 87 00:04:43,380 --> 00:04:47,590 ama aynı zamanda bizim konular açıkçası, Biz tüm dersler ayırabilirim. 88 00:04:47,590 --> 00:04:50,140 Aslında olarak, CS 51, sunulan sonraki dönem, 89 00:04:50,140 --> 00:04:53,990 Bu konularla ilgili bir çok duruluyor aşağıda tarif edilmiştir. 90 00:04:53,990 --> 00:04:56,781 Yani bütün bir dönem geçirebilirsiniz Bunları anlamak. 91 00:04:56,781 --> 00:04:58,530 Ama biz denemek için gidiyoruz onları geçmek için 92 00:04:58,530 --> 00:05:00,800 en azından yeterli sen misin ne anlayabilir 93 00:05:00,800 --> 00:05:03,700 Eğer baktığınızda oluyor Bir Swift programında 94 00:05:03,700 --> 00:05:07,310 ve yolunuzu kesmek mümkün Nihai proje için içinden. 95 00:05:07,310 --> 00:05:10,780 >> En iyi yollarından biri Şimdi yapabilirsiniz Bu konuda ek bilgi almak 96 00:05:10,780 --> 00:05:14,700 Sadece Apple'ın aracılığıyla açıkçası Swift ile ilgili belgelere sağladı. 97 00:05:14,700 --> 00:05:16,930 API'leri bir sürü var mevcut olduğu. 98 00:05:16,930 --> 00:05:21,170 Ve bu sizin için iyi bir ana üs olduğunu Belirli şeylere bakmak için o sen 99 00:05:21,170 --> 00:05:23,020 iOS karıştığı bir API ile yapmak istiyorum. 100 00:05:23,020 --> 00:05:26,350 Için kamera kullanmak istiyorsanız, örnek, sen burada arıyorum başlamadan edebilirsiniz 101 00:05:26,350 --> 00:05:32,540 ve aynı zamanda Google ve Stack kullanın Normalde yaptığınız gibi taşma. 102 00:05:32,540 --> 00:05:36,670 >> Bu konuda herhangi bir sorunuz Biz sağ atlamak önce? 103 00:05:36,670 --> 00:05:37,880 Pekala. 104 00:05:37,880 --> 00:05:38,700 Hadi devam edelim. 105 00:05:38,700 --> 00:05:42,620 >> Bunun için ilk önce, ben bir örnek dosya sayısı. 106 00:05:42,620 --> 00:05:46,040 Ve ben adım denemek için gidiyorum nispeten hızlı bir şekilde aralarında. 107 00:05:46,040 --> 00:05:49,190 Bu Swift için Hello World dosyasıdır. 108 00:05:49,190 --> 00:05:51,050 Çok basit. 109 00:05:51,050 --> 00:05:54,360 Yol daha fazla yorum var gerçek kod vardır daha vardır. 110 00:05:54,360 --> 00:05:57,100 Gerçek kod olan dikkat hat 14 çok alt. 111 00:05:57,100 --> 00:05:57,980 Bu baskı diyor. 112 00:05:57,980 --> 00:05:59,820 Ve sonra bir işlev çağrısı. 113 00:05:59,820 --> 00:06:03,010 Biz ona bir içine geçiyoruz Dize Merhaba CS50 çağırdı. 114 00:06:03,010 --> 00:06:04,750 Hiçbir noktalı virgül var dikkat edin. 115 00:06:04,750 --> 00:06:07,010 Hiçbir int main var dikkat edin. 116 00:06:07,010 --> 00:06:10,392 Hiçbiri var Biz C. vardı cruft 117 00:06:10,392 --> 00:06:15,020 Bu şekilde Swift kullanırken, Sadece bir metin dosyasında yazılı olduğu 118 00:06:15,020 --> 00:06:18,340 ve sonra, benim bilgisayarda depolanan Ben derlemek ve çalıştırabilirsiniz. 119 00:06:18,340 --> 00:06:20,920 >> Ben burada dikkat edin CS50 IDE kullanarak değil. 120 00:06:20,920 --> 00:06:24,460 Bu ben varsayar çalışan ve ben OS X üzerinde olduğumu, 121 00:06:24,460 --> 00:06:27,870 ve ben Xcode zaten yüklü olduğunu Bunun için sırayla bu makinede 122 00:06:27,870 --> 00:06:29,080 Aslında işleve. 123 00:06:29,080 --> 00:06:33,349 Ama bu sadece normal bir metin dosyası biz o zaman derleme ve düzenleme yapabilirsiniz. 124 00:06:33,349 --> 00:06:34,890 Yani bu aslında nasıl çalıştığını görelim. 125 00:06:34,890 --> 00:06:37,430 Ne derlemek istiyorsanız? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 Bir an ya da iki sonra, şimdi var olduğunu göreceksiniz 128 00:06:42,960 --> 00:06:45,360 1 adlı bir dosya içine bu derlenmiş. 129 00:06:45,360 --> 00:06:51,090 Ve şimdi bizim CS50 baskılı var, yerine bizim Hello World uygulaması. 130 00:06:51,090 --> 00:06:54,690 >> Olarak başka bir şey fark iyi ki varsayılan olarak 131 00:06:54,690 --> 00:07:00,090 Biz giriş yoktu / n yeni bir satır yazdırmak için. 132 00:07:00,090 --> 00:07:05,315 Varsayılan olarak, baskı fonksiyonu ile Swift sizin için yeni bir çizgi yazdırır. 133 00:07:05,315 --> 00:07:09,284 İsteğe bağlı ek iletebilirsiniz Parametre bunu değil bunu söylemek için. 134 00:07:09,284 --> 00:07:10,950 Ama bu konuda daha fazla bilgi için Google. 135 00:07:10,950 --> 00:07:13,450 Varsayılan olarak, baskı hattı yapacağız. 136 00:07:13,450 --> 00:07:16,420 >> Pekala, devam edelim sonra bazı başka şeyler. 137 00:07:16,420 --> 00:07:18,620 Peki biz aslında değişkenleri tanımlayabilirsiniz? 138 00:07:18,620 --> 00:07:21,960 Biz kullanan var yapabilir iki yöntemden biri. 139 00:07:21,960 --> 00:07:26,122 Ve ben istediğim bir söylemek İlk hakkında bu let tanımıdır. 140 00:07:26,122 --> 00:07:27,830 Ve bu önemli etkin bir nedeni 141 00:07:27,830 --> 00:07:30,240 ne yapıyoruz, bir sabiti tanımlayan olduğunu. 142 00:07:30,240 --> 00:07:34,010 Biz bir değişken oluşturmak için gidiyoruz, ya da daha doğrusu sürekli olarak adlandırılan isim, 143 00:07:34,010 --> 00:07:38,200 Bazı verilerinin-- kendisine temin Bu durumda, dize Dan. 144 00:07:38,200 --> 00:07:40,630 Ancak bu let kullanılarak Anahtar kelime, biz diyorsun 145 00:07:40,630 --> 00:07:43,860 Bu variable-- o ya Yine adı constant-- 146 00:07:43,860 --> 00:07:46,220 adı hiç değişmedi olacak. 147 00:07:46,220 --> 00:07:50,120 Bu boyunca değişmez olacak Bu programın süresi 148 00:07:50,120 --> 00:07:53,100 ya da bütün bağlamda süresi 149 00:07:53,100 --> 00:07:55,390 o değişken mevcuttur. 150 00:07:55,390 --> 00:08:00,096 >> Bu o zaman gerçekten önemli değil mi bazı veriler var 151 00:08:00,096 --> 00:08:02,970 programınızda değişecek, ve çeşitli örnekler göreceksiniz 152 00:08:02,970 --> 00:08:06,790 Biz kullanmak istediğinizde hakkında Diğer sözdizimi karşı let, 153 00:08:06,790 --> 00:08:11,040 Eğer izin kullanmak o önemli Mümkün bu bildirimlerin çünkü 154 00:08:11,040 --> 00:08:13,740 o dili değişmiş olacak değil, 155 00:08:13,740 --> 00:08:16,590 ve aslında gerçekleştirebilirsiniz optimizasyonlar bir sürü 156 00:08:16,590 --> 00:08:19,560 hızını artırmak ve Programınızın güvenliği. 157 00:08:19,560 --> 00:08:24,480 Ve emniyet, ben izin vermeyeceğim demek çılgın hataları ile bu kazasında 158 00:08:24,480 --> 00:08:27,910 Biz olabileceğini C. görmeye alışık 159 00:08:27,910 --> 00:08:32,460 >> Sonra dize enterpolasyon kullanabilirsiniz Bir dize içinde bu saklanması. 160 00:08:32,460 --> 00:08:35,200 Yani biz bu görebilirsiniz Baskı hattı, merhaba yazdırmak, 161 00:08:35,200 --> 00:08:38,950 ve daha sonra eğik açık parens kullanılarak ve sonra benim değişkenin adı, 162 00:08:38,950 --> 00:08:41,809 bu durumda sabit olarak, parantez kapatın. 163 00:08:41,809 --> 00:08:46,400 Ben esasen o atıyorum Bu değişken olarak adlandırılan ismin içeriği 164 00:08:46,400 --> 00:08:50,240 dize içinde ve sonra Orada sonucu yazdırmak. 165 00:08:50,240 --> 00:08:54,070 >> Bu dosyaya başka bir değişiklik var ki ben çok üstünde, olması, 166 00:08:54,070 --> 00:08:57,340 Bir shebang çizgi koymak temelde sadece belirtir 167 00:08:57,340 --> 00:09:00,180 Ben kullanmak istiyorum Swift tercüman, hangi 168 00:09:00,180 --> 00:09:04,190 Artık zorunda olduğu anlamına gelir Bu özel programı derlemek. 169 00:09:04,190 --> 00:09:06,567 Ben sadece kendi komut gibi çalıştırabilirsiniz. 170 00:09:06,567 --> 00:09:09,400 Ancak bunun arkasında, bu durumda, bir sahneler derlenmiş ve daha sonra varlık 171 00:09:09,400 --> 00:09:10,030 yürütülüyor. 172 00:09:10,030 --> 00:09:13,540 Bizim için sadece görünmez. 173 00:09:13,540 --> 00:09:15,880 >> Pekala, devam edelim. 174 00:09:15,880 --> 00:09:19,650 Yani hile biraz var sadece daha önce oldu. 175 00:09:19,650 --> 00:09:23,230 Sana bu ben gösterdi Bir sabit tanımlayabiliriz. 176 00:09:23,230 --> 00:09:25,490 Ve bunu yapmak için bazı verileri sağlayabilir. 177 00:09:25,490 --> 00:09:29,240 Ancak bu durumda, ben yapmadım fark Aslında veri türünü belirtmek 178 00:09:29,240 --> 00:09:29,820 öyle ki. 179 00:09:29,820 --> 00:09:32,780 Ve çünkü var derleyici, Swift can 180 00:09:32,780 --> 00:09:36,910 sadece tabanlı veri türünü anlaması Ben içine koymak verilere. 181 00:09:36,910 --> 00:09:41,760 O bu değerlendirme olduğunu bildiği için Değişken burada, bu veriler doğru 182 00:09:41,760 --> 00:09:43,370 Burada, bu bir dize olduğunu biliyor. 183 00:09:43,370 --> 00:09:48,690 Ve böylece bu sabit adı bu nedenle hem de bir dize olacak. 184 00:09:48,690 --> 00:09:52,730 >> Ama biz de açık olabilir var türü hakkında 185 00:09:52,730 --> 00:09:55,790 biz kullanmak için gidiyoruz sabitler veya değişkenler 186 00:09:55,790 --> 00:10:01,590 Bu sözdizimini kullanarak instead-- adı kolon Dize eşittir let 187 00:10:01,590 --> 00:10:05,530 Bu durumda biz demektir Dan, sabit olarak adlandırılan adını tanımlamak için gidiyor. 188 00:10:05,530 --> 00:10:07,150 Bu tip String olacak. 189 00:10:07,150 --> 00:10:10,550 Ve değer Dan olacak. 190 00:10:10,550 --> 00:10:12,550 Şimdi başka bir yol olduğunu Biz variables-- oluşturabilir 191 00:10:12,550 --> 00:10:15,549 bu değiştirilebilir değişkenler olan biz, aslında, giderek demektir 192 00:10:15,549 --> 00:10:19,670 bazen kendi içeriğini değiştirmek için bağlamda süresindeki 193 00:10:19,670 --> 00:10:23,890 bu değişken biz defined-- olduğu var anahtar sözcüğünü kullanın yerine edelim. 194 00:10:23,890 --> 00:10:27,400 Fakat yine de, varsayılan olarak, sürece biliyorsun bu verileri işlemek gerektiğini, 195 00:10:27,400 --> 00:10:30,510 için izin kullanmayı deneyin performans iyileştirmeleri. 196 00:10:30,510 --> 00:10:33,740 >> Bu durumda, o zaman can veri türünü belirlemek 197 00:10:33,740 --> 00:10:37,650 biz içeride olmasını beklediklerini etiket olarak adlandırılan bu yeni değişken. 198 00:10:37,650 --> 00:10:38,800 Bir dize olacak. 199 00:10:38,800 --> 00:10:43,030 Ve biz o birleştirmek için gidiyoruz İki dizeleri birlikte dize merhaba, 200 00:10:43,030 --> 00:10:48,070 ve dize ile temsil Değişken, ya da daha doğrusu sabit ismi. 201 00:10:48,070 --> 00:10:50,660 >> Yani bu güzel çünkü biraz o biz gibi PHP olduğunu 202 00:10:50,660 --> 00:10:52,250 çok kolay dize birleştirme var. 203 00:10:52,250 --> 00:10:56,350 Biz otomatik gerekmez bellek yönetimi her türlü kullanımı 204 00:10:56,350 --> 00:11:00,580 boyutunu artırmak ve yapılacak Orada komik şeyler herhangi bir tür. 205 00:11:00,580 --> 00:11:05,040 Biz aslında beklediğiniz gibi çalışır. 206 00:11:05,040 --> 00:11:09,370 >> Pekala, bu konuda herhangi bir sorunuz var mı? 207 00:11:09,370 --> 00:11:12,520 >> Şimdi diğer nedeni biz yeteneğine sahip ihtiyacınız 208 00:11:12,520 --> 00:11:15,490 Ne tanımlamak mümkün Veri değişkenlerin türü 209 00:11:15,490 --> 00:11:18,170 bazen biz değil çünkü değişkenlerini başlatmak istiyor 210 00:11:18,170 --> 00:11:21,080 bazı verilerle tanım noktası. 211 00:11:21,080 --> 00:11:23,500 Bu durumda Yani, diyelim ki Ben girilmesi başlamak istiyorum 212 00:11:23,500 --> 00:11:25,040 Bir sınıf defterine bazı notlar. 213 00:11:25,040 --> 00:11:27,530 Peki biliyorum biri olduğunu Ben olmak istiyorum değişkenler 214 00:11:27,530 --> 00:11:30,280 Bir kesilebilir notu olacak. 215 00:11:30,280 --> 00:11:33,010 Ve biz de biliyoruz biz o bir tamsayı olmak istiyorum. 216 00:11:33,010 --> 00:11:36,030 Ama belki biz henüz yok Bu sınıf kullanılabilir olması. 217 00:11:36,030 --> 00:11:39,570 >> Swift, sen var veri türünü tanımlar 218 00:11:39,570 --> 00:11:44,000 bir ile ilişkilidir Değişken veya sabit let 219 00:11:44,000 --> 00:11:47,840 aslında can önce Bu değişken kullanabilirsiniz. 220 00:11:47,840 --> 00:11:51,170 O kesinlikle yazılı olduğundan, Bir tür ilişkilendirmek zorunda 221 00:11:51,170 --> 00:11:52,890 Bu değişkenler ile. 222 00:11:52,890 --> 00:11:56,120 >> Ben düzgün değil ettik, bu durumda Yani Bazı değeri ile ilk başlatıldı, 223 00:11:56,120 --> 00:12:00,520 Sonra ben Swift anlatmak için gerekenleri Ben veri türü olmasını bekliyoruz. 224 00:12:00,520 --> 00:12:02,650 Ve kalması için gidiyor Aynı veri türü 225 00:12:02,650 --> 00:12:05,780 Bu programın tarih boyunca. 226 00:12:05,780 --> 00:12:10,050 >> Şimdi en kısa sürede cazip olabilir Ben bu notu değişken yarattık 227 00:12:10,050 --> 00:12:13,530 ve bir mesafede eğer ben şimdi 100 tamsayı, 228 00:12:13,530 --> 00:12:18,540 bitiştirmek için denemek istiyorum Bu tamsayı bir dize, 229 00:12:18,540 --> 00:12:21,610 Hala kullanmak için cazip olabilir bu dize birleştirme operatörü 230 00:12:21,610 --> 00:12:24,500 gibi biz sadece birkaç satır önce yaptım. 231 00:12:24,500 --> 00:12:26,460 Ama ne yazık ki, Bu aslında olmaz 232 00:12:26,460 --> 00:12:29,270 Eğer, çünkü çalışmak esasen performans 233 00:12:29,270 --> 00:12:32,380 iki farklı bir çalışma. 234 00:12:32,380 --> 00:12:36,856 >> Şimdi bu diğerinden çok farklı gerçekten PHP gibi diller 235 00:12:36,856 --> 00:12:38,480 türlerinin kendi tür loosey goosey. 236 00:12:38,480 --> 00:12:40,030 Onlar sadece, evet, gibi konum neyse, umurumda değil. 237 00:12:40,030 --> 00:12:42,710 Bana bir tür verin ve belki doğru olanı yapacağım. 238 00:12:42,710 --> 00:12:46,060 >> Bu durumda, çabuk görür türleri hakkında son derece sıkı 239 00:12:46,060 --> 00:12:47,350 sizinle ilgileniyor. 240 00:12:47,350 --> 00:12:50,700 Bu toplama operatörü veya birleştirme operatörü 241 00:12:50,700 --> 00:12:54,400 esasen bir çift var farklı olası seçenekler. 242 00:12:54,400 --> 00:12:56,970 Sen toplamı yapabilirsiniz tamsayılar, veya sizinle 243 00:12:56,970 --> 00:13:00,870 dize birleştirme yapmak ve olabilir belki bazı başka şeyler de. 244 00:13:00,870 --> 00:13:05,550 Ama bu operatör kabul etmezse bunun her iki yanı üzerinde ne, 245 00:13:05,550 --> 00:13:10,452 ya da bu kombinasyonu oldukça İki tip, o bekliyor ne değildir, 246 00:13:10,452 --> 00:13:11,910 o zaman bir arızaya neden olacak. 247 00:13:11,910 --> 00:13:16,690 >> Bu durumda Peki, bu ne anlama geliyor bir dize artı bir tamsayı var? 248 00:13:16,690 --> 00:13:18,880 Peki bağlamında Bu, muhtemelen istiyoruz 249 00:13:18,880 --> 00:13:21,990 bir dize birleştirme işlemini yapmak. 250 00:13:21,990 --> 00:13:26,420 Ama tabii bilgisayar bağlamda bu tür yoktur. 251 00:13:26,420 --> 00:13:29,950 Ve böylece biz sağlamanız gerekir Bu ek bilgi 252 00:13:29,950 --> 00:13:32,390 onu ne bildirmek için Yapmak istediğimiz olmasıdır. 253 00:13:32,390 --> 00:13:36,860 >> Diğer bir deyişle, aslında Yani Swift kesinlikle yazılı olduğu 254 00:13:36,860 --> 00:13:39,520 Eğer bir yapmak zorunda anlamına gelir ek iş biraz 255 00:13:39,520 --> 00:13:42,100 bunu çalıştırmak için almak için sen-cekti istemek yolu. 256 00:13:42,100 --> 00:13:43,710 Ancak sonuç olarak, bu daha güvenlidir. 257 00:13:43,710 --> 00:13:46,290 Ve bir kez almak bu tür hesap içine 258 00:13:46,290 --> 00:13:49,300 şeyler sadece açıkçası başlangıç Oldukça iyi çalışmak. 259 00:13:49,300 --> 00:13:52,520 >> Bu durumda, biz o zaman olur Yani dize birleştirme gerçekleştirmek 260 00:13:52,520 --> 00:13:56,040 açıkça döküm Bir dize tamsayı 261 00:13:56,040 --> 00:13:58,490 Bu onu sararak Sermaye S Dize işlevini, 262 00:13:58,490 --> 00:14:03,510 ve sonra Dize bitiştirmesi kullanılarak Operatör, bizim etiket değişkeni değiştirmek için 263 00:14:03,510 --> 00:14:06,280 ve sonra çıktı. 264 00:14:06,280 --> 00:14:08,420 >> Şimdiye kadar, çok iyi? 265 00:14:08,420 --> 00:14:12,020 Pekala, geçelim. 266 00:14:12,020 --> 00:14:16,300 >> Şimdi veri çeşitli vardır Biz Swift kullanabileceğiniz türleri. 267 00:14:16,300 --> 00:14:21,620 Eğer alışmış gibi, Biz kesilebilir dizi oluşturabilirsiniz. 268 00:14:21,620 --> 00:14:26,140 Ve bu dizi sadece can Tek bir türü içerir. 269 00:14:26,140 --> 00:14:30,360 >> Yani bu durumda, biz oluşturmak için gidiyoruz tamsayılar bir değişken diziler, hangi 270 00:14:30,360 --> 00:14:34,800 Biz notları arayacak ve biz mümkün olacak Bu kare aralığındaki o saklamak için 271 00:14:34,800 --> 00:14:38,650 senin gibi biçim alışık büyüdüğümüz Diğer dillerde çeşitli için. 272 00:14:38,650 --> 00:14:41,150 Ama biz konum burada fark birkaç şey tanımlayan. 273 00:14:41,150 --> 00:14:45,350 notları bir değişken olduğunu variable-- Biz let anahtar sözcüğünü kullanın. 274 00:14:45,350 --> 00:14:49,620 Anlamına Yani biz o zaman değiştirebilirsiniz Bu dizinin içeriği. 275 00:14:49,620 --> 00:14:53,420 Bu tip Array Int olduğunu ve biz bunu söyleyebilirim 276 00:14:53,420 --> 00:14:56,260 Burada bu köşeli parantez dayalı. 277 00:14:56,260 --> 00:14:58,930 >> Güzel şeyler şimdi bir Bu konuda biz ise 278 00:14:58,930 --> 00:15:02,310 bir sürü erişimi ek bilgi 279 00:15:02,310 --> 00:15:07,110 dizi hakkında sadece kullanma Bazı basit nokta notasyonu. 280 00:15:07,110 --> 00:15:10,500 Yani, örneğin, grades.count bize sağlar 281 00:15:10,500 --> 00:15:14,820 Bu mevcut öğe sayısı biz sonra oldukça erişebilirsiniz dizi, 282 00:15:14,820 --> 00:15:19,090 basitçe bu nokta gösterimi kullanılarak. 283 00:15:19,090 --> 00:15:21,830 >> Ek eklemek istiyorsanız Bu diziye öğeler, 284 00:15:21,830 --> 00:15:27,220 PHP stili yapamaz burada sadece açıkça tanımlamak, 285 00:15:27,220 --> 00:15:30,910 Belirli bir dizindeki bazı değer Eklemek istediğiniz söyledi. 286 00:15:30,910 --> 00:15:37,210 Bunun yerine, ekleme, kullanımı Dizi türü yöntem 287 00:15:37,210 --> 00:15:40,920 Bu listeye, bu madde, 95 eklenecek. 288 00:15:40,920 --> 00:15:45,990 >> Yani şimdi bu dizi aşağıdaki vardır 100, 0, 90, 85 contents--. 289 00:15:45,990 --> 00:15:49,270 Ve şimdi biz ekli ettik Bu 95 de. 290 00:15:49,270 --> 00:15:51,830 >> Başka yolları da vardır Bir şeyleri ekleyebilirsiniz. 291 00:15:51,830 --> 00:15:55,030 Aslında kullanabilirsiniz Bir toplama operatörü, 292 00:15:55,030 --> 00:15:59,200 bu olarak yorumlanacaktır Bir dizi ekleme işlemi. 293 00:15:59,200 --> 00:16:04,680 Ve sonra başka ekleyebilirsiniz içerikleri 70 ve 80 olan dizi, 294 00:16:04,680 --> 00:16:05,560 Bu diziye. 295 00:16:05,560 --> 00:16:08,250 Yani şimdi var Bu değişkende içeriği 296 00:16:08,250 --> 00:16:17,220 100, 0, 90, 85, 95, 70, ve 80 grades--. 297 00:16:17,220 --> 00:16:21,850 Bu sadece güzel bir söz dizimi olan Swift bize sağlayan şeker. 298 00:16:21,850 --> 00:16:23,850 >> Biz toplamak istiyorsanız Yani sınıflarda, belki sen 299 00:16:23,850 --> 00:16:27,340 yineleme istediğiniz olacak Bu döngü her öğenin üzerinde. 300 00:16:27,340 --> 00:16:32,150 Ve biz Swift, kavramı, var a döngüsü için beklediğiniz gibi. 301 00:16:32,150 --> 00:16:35,350 Ama biz işaret yolu Bir aralık biraz farklıdır. 302 00:16:35,350 --> 00:16:37,790 Bu durumda, Yani Her şeyi Özetle, biz olacak 303 00:16:37,790 --> 00:16:40,650 Geçici oluşturmak için gidiyor Bizim için sırayla değişken olarak adlandırılan toplamı 304 00:16:40,650 --> 00:16:42,580 Bu sayımı korumak için. 305 00:16:42,580 --> 00:16:44,430 >> Ve bizim için uyarı Burada döngü yapımı. 306 00:16:44,430 --> 00:16:46,820 0 ayında endekste için .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Yani bu yapı, 0 .. 00:17:01,860 Biz yaratmak için gidiyoruz diyerek 0 up tamsayılar bir dizi 310 00:17:01,860 --> 00:17:05,750 ancak grades.count hariç. 311 00:17:05,750 --> 00:17:09,577 Yani bu olacaktır, 0, 1, 2, 3, 4, 5, yukarı Ancak birçok biri kadar 312 00:17:09,577 --> 00:17:10,410 grades.count önce. 313 00:17:10,410 --> 00:17:14,160 >> Yani bu nasıl farklıdır biz döngüler için genellikle kullanılan ediyorum 314 00:17:14,160 --> 00:17:18,569 Bazı indeksi olurdu nerede Değişken, ilk 0'a eşit olarak ayarlayın 315 00:17:18,569 --> 00:17:25,480 ve daha sonra bazı kadar bu entegre öğelerin sayısı daha az değer 316 00:17:25,480 --> 00:17:27,140 Bu dizide. 317 00:17:27,140 --> 00:17:29,820 >> Yani değişiklik var Bu sayede, aslında, 318 00:17:29,820 --> 00:17:35,010 hangi bize çok kolay sağlar aralıkları farklı ayarlayın. 319 00:17:35,010 --> 00:17:40,570 Bu aralık için değiştirirseniz Üç nokta, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 Bu aralığını temsil 0 dahil grades.count için 321 00:17:45,120 --> 00:17:49,260 Bu dizi de olduğu anlamına gelmektedir o aralıkta yer. 322 00:17:49,260 --> 00:17:52,110 >> Ama bu çok kullanışlı tam bu şeyler için, 323 00:17:52,110 --> 00:17:54,590 Biz yapmak zorunda olduğunda döngü üzerinde yineleme 324 00:17:54,590 --> 00:17:59,630 Bu endeksler sıfır endeksli çünkü, diğer dillerde gördüğümüz gibi 325 00:17:59,630 --> 00:18:02,360 de. 326 00:18:02,360 --> 00:18:05,210 For döngüsü bu konuda herhangi bir soru var mı? 327 00:18:05,210 --> 00:18:10,660 >> Yani örtülü tanım var Bu indeks değişkeni, 328 00:18:10,660 --> 00:18:14,350 kimin değeri 0 başlar ve Her döngü tekrarında devam eder 329 00:18:14,350 --> 00:18:17,950 Bir noktaya kadar 1 kadar artması bu, grades.count eşittir 330 00:18:17,950 --> 00:18:20,380 hangi noktada, döngü iptal eder. 331 00:18:20,380 --> 00:18:23,730 >> Bizim dizesinde dikkat edin Burada İnterpolasyon, 332 00:18:23,730 --> 00:18:26,910 biz aslında bazı basit gerçekleştirebilirsiniz Bu değerlere manipülasyonlar. 333 00:18:26,910 --> 00:18:31,230 Yani endeks artı 1 aslında olacak Bu değerin bir toplamı gerçekleştirmek 334 00:18:31,230 --> 00:18:34,780 göstergesi olduğu üzere Bu durumda, bir tamsayı. 335 00:18:34,780 --> 00:18:37,810 Ve bu noktada, o olacak daha sonra bir dizeye dönüştürülür 336 00:18:37,810 --> 00:18:42,230 ve burada bu dizeye interpolasyon Biz beklediğiniz gibi ve yazdırılır. . 337 00:18:42,230 --> 00:18:44,520 >> Ve güzel bir şey diziler hakkında burada 338 00:18:44,520 --> 00:18:50,730 biz de var edebiliyoruz getiriliyor değerler ve ayar değerleri 339 00:18:50,730 --> 00:18:54,080 köşeli ayraç notasyonu olarak kullanarak biz de diğer dillerde gördüm. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Pekala, buradan, biz şimdi çok Bizim notlarının tüm bizim toplamını hesaplamak. 342 00:19:01,030 --> 00:19:02,780 Şimdi çeşit sonraki mantıklı bir adım olacaktır 343 00:19:02,780 --> 00:19:07,580 bulmak için bir bölme işlemi yapmak için Bu notların ortalamasının dışında. 344 00:19:07,580 --> 00:19:10,150 Ama önemli bir şey Buradaki hangi 345 00:19:10,150 --> 00:19:15,020 Bu miktar, belki bir tamsayı olmasıdır. 346 00:19:15,020 --> 00:19:18,020 Ama biz bazı gerçekleştirmeniz gerekir çift ​​bölünme tür. 347 00:19:18,020 --> 00:19:20,600 Ve bu olacak zaman son derece önemli 348 00:19:20,600 --> 00:19:24,140 Bu işlemi gerçekleştirmek istiyorum, Biz ne söylediğini, çünkü 349 00:19:24,140 --> 00:19:28,430 biz aslında ihtiyaç vardır iki çift üzerinde bölünme gerçekleştirin. 350 00:19:28,430 --> 00:19:31,370 Ve yine, Swift çünkü çok güçlü yazılan, 351 00:19:31,370 --> 00:19:36,760 Biz açıkça tüm ayarlamanız gerekir çiftler için öğeleri biz önce aslında 352 00:19:36,760 --> 00:19:38,300 Bu işlemi gerçekleştirmek. 353 00:19:38,300 --> 00:19:40,550 >> Sırayla bize Yani çift ​​bölme işlemlerini, 354 00:19:40,550 --> 00:19:43,730 Sadece bir için yeterli değil bu öğelerin bir çift olması. 355 00:19:43,730 --> 00:19:46,400 Her ikisi de bir olmak zorunda hızlı sırayla çift 356 00:19:46,400 --> 00:19:50,860 Bu emin olmak için bizim yapmak istediğimiz budur. 357 00:19:50,860 --> 00:19:54,360 Yani biz o zaman açıkça typecasting olacak Yukarıda hesaplanan ettik toplamı 358 00:19:54,360 --> 00:19:58,970 ve çiftlerde için notlarının sayısı ve o operasyon ve mağaza gerçekleştirmek 359 00:19:58,970 --> 00:20:02,390 bu yeni bir değişken haline, ya da daha doğrusu Ortalama olarak adlandırılan bu yeni sabit 360 00:20:02,390 --> 00:20:06,810 ne tür hayal hangi olacak? 361 00:20:06,810 --> 00:20:07,587 Çift, evet. 362 00:20:07,587 --> 00:20:09,420 Bu durumda, bu yüzden biz Bunu belirtmek zorunda değilsiniz 363 00:20:09,420 --> 00:20:13,450 Bu çıkarılabilir çünkü Veri ortalamasının operasyon ne tür 364 00:20:13,450 --> 00:20:14,730 olacak. 365 00:20:14,730 --> 00:20:19,025 Ve Swift genellikle oldukça iyidir yaklaşık türlerini anlaması edememek. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Bunu görmek istiyor musunuz koşmak ya ben taşıyabilirim? 368 00:20:24,200 --> 00:20:25,640 Ben devam etmek istiyorum. 369 00:20:25,640 --> 00:20:28,130 Bu herhangi herhangi bir sorunuz var mı? 370 00:20:28,130 --> 00:20:28,630 Büyük. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Şimdi almak için başlamak için gidiyoruz İyi stuff-- tanımlayan fonksiyonları, 373 00:20:35,010 --> 00:20:39,090 ve diğer türde bir çift Swift özgü değil var 374 00:20:39,090 --> 00:20:41,620 Diğer dillerde görülen Bu noktaya kadar, 375 00:20:41,620 --> 00:20:46,290 ancak diğer mevcut daha sonra bulabileceğiniz dilleri. 376 00:20:46,290 --> 00:20:48,210 Bunun için ilk önce isterseniz bir işlev tanımlamak için, 377 00:20:48,210 --> 00:20:52,170 Eğer korkak kelime ile tanımlamak fonksiyonu ve daha sonra işlev adı, 378 00:20:52,170 --> 00:20:56,710 ve daha sonra parantez içinde, argümanlar Bu o işlev kabul etmek istiyorum. 379 00:20:56,710 --> 00:21:00,280 Argümanlar da gerekir specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 Ayrıca veri türünü belirtmeniz gerekir Onlar varılabilir sürece vardır. 381 00:21:05,010 --> 00:21:07,500 Ve biz o küçük görürsünüz Sadece biraz içinde ihtar. 382 00:21:07,500 --> 00:21:09,920 >> Yani bu durumda biz bir var işlevi printGradeCount denir. 383 00:21:09,920 --> 00:21:12,840 Biz kabul edeceğiz variable-- doğrusu bu durumda, 384 00:21:12,840 --> 00:21:14,450 Bir constant-- gradebook çağırdı. 385 00:21:14,450 --> 00:21:18,517 Ve bunun olacak tamsayılar dizisi yazın. 386 00:21:18,517 --> 00:21:20,600 Şimdi bir şey var Burada çok önemli 387 00:21:20,600 --> 00:21:21,849 ben anlamak istiyorum. 388 00:21:21,849 --> 00:21:27,560 Bu varsayılan olarak, bu argümanlar olduğunu Bu işleve girdiler vardır ki 389 00:21:27,560 --> 00:21:34,380 örtülü bir let anahtar sözcüğüyle tanımlanan ki ben bunu değiştirmek anlamına gelir 390 00:21:34,380 --> 00:21:39,850 Burada gradebook değişken. 391 00:21:39,850 --> 00:21:43,360 Ve bu tür, mantıklı Eğer veri geçirerek çünkü. 392 00:21:43,360 --> 00:21:45,860 Ve belki de istemiyorum sizden altından değiştirilecek. 393 00:21:45,860 --> 00:21:50,800 Bu açıkça söz etmek mümkündür Bu değişken koyarak olduğu 394 00:21:50,800 --> 00:21:52,070 Burada var anahtar sözcüğü. 395 00:21:52,070 --> 00:21:56,832 Ama bu biz ettik bir gotcha olduğunu fark insanlar geçmişte yapmış 396 00:21:56,832 --> 00:21:59,790 Onlar gidiyor farz olduğunu Bir değişken zaman, aslında, 397 00:21:59,790 --> 00:22:02,640 bir sabittir. 398 00:22:02,640 --> 00:22:07,340 >> Pekala, işte o zaman, bu durumda, Biz herhangi bir geri dönüş türünü belirten değildir. 399 00:22:07,340 --> 00:22:09,460 Biz nasıl yapılacağını size göstereceğim sadece bir an o. 400 00:22:09,460 --> 00:22:12,340 Ama biz burada fark koşulu eğer sadece basit. 401 00:22:12,340 --> 00:22:14,560 Not defteri ise boş bu değer, 402 00:22:14,560 --> 00:22:19,310 Bu tamsayı sadece özelliğidir Dizi, o zaman bir şeyler yazdırmak. 403 00:22:19,310 --> 00:22:23,100 Aksi takdirde başka bir şey. 404 00:22:23,100 --> 00:22:25,000 >> Oldukça basit, şimdiye kadar sanırım. 405 00:22:25,000 --> 00:22:27,960 Herhangi bir sorunuz varsa Ama beni durduramaz. 406 00:22:27,960 --> 00:22:33,350 >> Şimdi bu fonksiyonu, ortalama, aynı zamanda alır Bazı argümanlar, daha doğrusu tek argüman, 407 00:22:33,350 --> 00:22:37,507 not defteri ve bu zaman olan Çift türü dönmek için gidiyor. 408 00:22:37,507 --> 00:22:39,340 O bilgisayar Çünkü ortalama ve bu kadar 409 00:22:39,340 --> 00:22:45,010 aslında geri gidiyor Çağıran hattına bilgisayarlı ortalama. 410 00:22:45,010 --> 00:22:50,070 >> Bu durumda, belirttiğimiz ok sonra türü dönün. 411 00:22:50,070 --> 00:22:53,260 Ve bu hissedebilirsiniz ilk başta garip tür. 412 00:22:53,260 --> 00:22:55,610 Sen alışık büyüdüğümüz dönüşü ayar 413 00:22:55,610 --> 00:22:57,720 işlevin adından önce yazın. 414 00:22:57,720 --> 00:23:00,310 Ama bu düşünüyorsanız matematik açısından, 415 00:23:00,310 --> 00:23:03,320 gibi matematik varsa bir işlev tanımlamak, 416 00:23:03,320 --> 00:23:06,807 Bazı bir işlevi var girişler ve bir çıktı üretir. 417 00:23:06,807 --> 00:23:08,890 Ve bu tam olarak ne var Bu taklit etmek gerekiyordu. 418 00:23:08,890 --> 00:23:12,460 Ve diğer dillerin bir çift var Bu, aynı zamanda benzer bir sözdizimi var 419 00:23:12,460 --> 00:23:15,674 ama muhtemelen hiçbiri Eğer CS50 gördüm. 420 00:23:15,674 --> 00:23:17,090 Ama yine de onun tarafından karıştırılmamalıdır olmayın. 421 00:23:17,090 --> 00:23:21,650 Ok neler oluyor demektir Bu durumda döndürülebilir. 422 00:23:21,650 --> 00:23:23,650 Tamam, bu yüzden nasıl gidiyoruz Bu ortalama hesaplamak için? 423 00:23:23,650 --> 00:23:25,649 Peki, eğer gradebook boş, iyi o zaman sen 424 00:23:25,649 --> 00:23:30,731 hangi belki, 0 iade edecek makul bir şekilde bu tedavi. 425 00:23:30,731 --> 00:23:32,980 Ben en gelsin, bilmiyorum geri o biraz biraz. 426 00:23:32,980 --> 00:23:34,688 Bu aslında olmayabilir Makul bir yolu olmalı 427 00:23:34,688 --> 00:23:38,310 ortalama halinde hesaplamak için Boş bir gradebook var. 428 00:23:38,310 --> 00:23:41,260 >> Sonra biz sadece bizim toplamı gerçekleştirmek gerekir. 429 00:23:41,260 --> 00:23:43,900 Biz aslında burada edin Bir alternatif sürümü var 430 00:23:43,900 --> 00:23:49,190 Bize yineleme olanak döngü için Dizideki her bir öğenin üzerine 431 00:23:49,190 --> 00:23:53,630 ve her öğe yerleştirmek Kendi değişkene. 432 00:23:53,630 --> 00:23:56,200 Içinde sınıf için belirterek gradebook, ne diyorsun 433 00:23:56,200 --> 00:24:00,560 örtük gidiyoruz olduğunu adında yeni bir sabit oluşturmak 434 00:24:00,560 --> 00:24:05,180 temsil edecek sınıf gradebook her benzersiz kalemi 435 00:24:05,180 --> 00:24:06,769 Her zaman o döngü yinelenir. 436 00:24:06,769 --> 00:24:08,560 İlk kez böylece o çalıştırılır, sınıf olacak 437 00:24:08,560 --> 00:24:09,800 gradebook ilk öğe olacak. 438 00:24:09,800 --> 00:24:12,300 İkinci kez olacak İkinci öğe, böylece ve benzeri 439 00:24:12,300 --> 00:24:15,970 not defteri sahip olana kadar elemanların kendini tüketti. 440 00:24:15,970 --> 00:24:20,390 Sonra o Özetle mümkün olacak Bizim toplama değişkene notu 441 00:24:20,390 --> 00:24:22,570 ve bizim ortalama dönüş biz daha önce görmüştüm. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 Tamam, herhangi bir sorunuz var mı? 444 00:24:26,950 --> 00:24:27,699 Evet? 445 00:24:27,699 --> 00:24:28,990 İZLEYİCİ: Ben iki soru var. 446 00:24:28,990 --> 00:24:33,586 Birincisi, varsayımsal, can Eğer bu bir tamsayı çalıştırmak? 447 00:24:33,586 --> 00:24:35,604 Bir olmak zorunda değil mi çift, doğru mu? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: Can sen Bu soruyu tekrar? 449 00:24:37,520 --> 00:24:39,587 İZLEYİCİ: Ben yapabilir miyim ortalama olarak tamsayı? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: Can sen ortalama olarak tamsayı mı? 451 00:24:41,670 --> 00:24:45,015 Yani bir tamsayı döndürür bir çift yerine ortalama? 452 00:24:45,015 --> 00:24:48,204 >> HEDEF KİTLE: Sizi Return-- şu an aşağıda var. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Sağ burada, 0.0 dönün? 454 00:24:49,870 --> 00:24:51,790 HEDEF KİTLE: Evet, sadece 0 döndürür. 455 00:24:51,790 --> 00:24:56,590 Yani o da olacak 80 ya da 85, ancak 85.2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Yani bu durumda, böylece birkaç farklı yolu var 457 00:24:59,465 --> 00:25:00,090 Buna cevap. 458 00:25:00,090 --> 00:25:02,760 Beni sırayla cevap vereyim. 459 00:25:02,760 --> 00:25:06,740 Ben sadece bu dönüş yapmak eğer öyleyse 0, 0 bir tamsayı değeridir. 460 00:25:06,740 --> 00:25:09,730 Ve böylece bir neden olur Bu durumda tip hatası 461 00:25:09,730 --> 00:25:13,210 o bir çift bekliyor çünkü ama sonra bir tamsayı dönüyor. 462 00:25:13,210 --> 00:25:16,770 Ben bir tamsayı dönmek istiyorsanız, ben yapamam. 463 00:25:16,770 --> 00:25:20,450 Ben dönüş türünü ayarlayabilirsiniz , int burada 0 dönmek için, 464 00:25:20,450 --> 00:25:22,047 ve çift bölme işlemlerini değil. 465 00:25:22,047 --> 00:25:23,880 Ama sonra olurdu tamsayı bölme yapıyor. 466 00:25:23,880 --> 00:25:27,080 Ve böylece biz o zaman almak olmaz biz muhtemelen beklediğiniz ortalama. 467 00:25:27,080 --> 00:25:29,210 Ama evet, biz değiştirebilirsiniz bu şekilde türleri. 468 00:25:29,210 --> 00:25:32,598 >> HEDEF KİTLE: Ve ikincisi, seni üstüne bir Double var. 469 00:25:32,598 --> 00:25:35,502 Ama aşağı aşağıda, sizi Çift Çift dönüş yapmak, 470 00:25:35,502 --> 00:25:38,280 otomatik olarak zaten Çift biçimi dönen. 471 00:25:38,280 --> 00:25:42,278 Neden hala bunu tanımlamak gerekiyor Bir çift ile üst ok? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: Yani durumunda bu parçasıdır 473 00:25:45,010 --> 00:25:50,580 bir Şeyin yüzden, soru tekrarlamak bunun karşılığında örtük çünkü 474 00:25:50,580 --> 00:25:56,030 Burada tipleri, ne tür bu aslında , biz Swift ile açık olması gerekir 475 00:25:56,030 --> 00:25:59,970 biz istediğimiz hakkında Bu işlevin dışında iade 476 00:25:59,970 --> 00:26:02,690 o tip gerçekleştirdiğinde, böylece kontrol, bu emin olabilirsiniz 477 00:26:02,690 --> 00:26:05,850 biz aslında ne yazdım o Aşağıdaki aşağı aslında uygundur. 478 00:26:05,850 --> 00:26:10,225 Yani bir çek gibi çeşit var Durumun kendinle tür. 479 00:26:10,225 --> 00:26:11,050 Ama mudur 480 00:26:11,050 --> 00:26:12,560 >> HEDEF KİTLE: [duyulamaz] ok? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: vakalar zaman vardır biz örtük can belirtebilirsiniz 482 00:26:19,490 --> 00:26:21,550 dönüş türünü ayarlayın. 483 00:26:21,550 --> 00:26:23,940 Ancak bu durumda, I do not Bunun işe yarayacağını düşünüyorum. 484 00:26:23,940 --> 00:26:26,190 Diğer bazı sözdizimi var daha sonra görürsünüz. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Pekala, bu kaynak Kod biraz farklı 487 00:26:35,280 --> 00:26:41,839 Bu argümanları ayrıştırır, çünkü Biz aradığınız işlevi. 488 00:26:41,839 --> 00:26:44,130 Nasıl çalıştığını sana göstereyim biz aslında geçmeden önce 489 00:26:44,130 --> 00:26:48,050 bazı ilginç şeyler O Swift oluyor. 490 00:26:48,050 --> 00:26:51,870 >> Bu durumda Yani, eğer ben sadece bu koşmak ne yaptığını kodu fark 491 00:26:51,870 --> 00:26:54,900 Bu-- süre, bu tür Bana garip bir hata veriyor. 492 00:26:54,900 --> 00:26:59,730 Ben bunu birkaç geçmesi gerekiyor Bir komut satırı argümanı olarak tamsayılar. 493 00:26:59,730 --> 00:27:06,220 Yani, 150 ve 80 görelim ve Enter vurmak aslında ne yaptığını öğrenmek için. 494 00:27:06,220 --> 00:27:09,890 Bu her kabul ediyor tamsayılar olarak bu değerler. 495 00:27:09,890 --> 00:27:12,040 Bir not defterindeki içine giren ediyor. 496 00:27:12,040 --> 00:27:14,470 Ve o zaman performans gösterdiğine ortalama hesaplama 497 00:27:14,470 --> 00:27:16,650 ve biz beklediğiniz gibi olduğunu çıktısı. 498 00:27:16,650 --> 00:27:19,950 >> Ama açıkçası bir şeyler oluyor var Bu reddetme şey üzerinde 499 00:27:19,950 --> 00:27:23,300 bir tamsayı olarak bir şey. 500 00:27:23,300 --> 00:27:27,300 Biz ne zaman hatırlayacaksınız edebileceğiniz gibi komut satırı argümanları ile ilgili 501 00:27:27,300 --> 00:27:32,640 İlk C ve diğer dilde, Bu komut satırı argümanı 0-inci öğesi 502 00:27:32,640 --> 00:27:35,774 Liste komutu adıdır biz aslında idam söyledi. 503 00:27:35,774 --> 00:27:38,690 Bu durumda, ben sadece döngü ediyorum tüm komut satırı argümanları bitti. 504 00:27:38,690 --> 00:27:41,650 Ama fantezi her türlü yapmıyorum ilki olduğunu atlamak için kontrol edin. 505 00:27:41,650 --> 00:27:45,920 Ben sadece açıkça değilim ya da ben değilim dolaylı Bu tür olan kontrol 506 00:27:45,920 --> 00:27:49,900 tamsayılar aslında ben daha önce olduğu Bu hesaplama gerçekleştirin. 507 00:27:49,900 --> 00:27:52,420 >> Ve bu esas olarak var: burada ne oluyor. 508 00:27:52,420 --> 00:27:55,860 Her argüman için işlemin argümanları, 509 00:27:55,860 --> 00:27:59,210 Bazı denetimi gerçekleştirmek için gidiyorum. 510 00:27:59,210 --> 00:28:01,970 Ve bu durumda, ben gidiyorum İlk dönüştürmek için denemek için 511 00:28:01,970 --> 00:28:07,620 bir tamsayı içine argüman tarafından açık typecast yapılması, 512 00:28:07,620 --> 00:28:12,310 o girişinde, bir dize, çünkü olup bir tamsayıdır Aslında. 513 00:28:12,310 --> 00:28:18,140 >> Ama bu garip sözdizimi tür, izin notu Int (argüman) eşitse. 514 00:28:18,140 --> 00:28:21,120 Gerçekte ne oluyor Burada son derece olduğu 515 00:28:21,120 --> 00:28:24,390 senin kullanarak Swift önemli. 516 00:28:24,390 --> 00:28:27,610 Bu ne kullanıyor İsteğe bağlı tip denir. 517 00:28:27,610 --> 00:28:34,790 >> Yani bu fonksiyon, Int (argüman), sadece bir tamsayı, ama döner döner 518 00:28:34,790 --> 00:28:37,470 Ne isteğe bağlı bir tamsayı denir. 519 00:28:37,470 --> 00:28:41,200 Ve böylece bu tür bir bir tür üst kısmında bir türü. 520 00:28:41,200 --> 00:28:45,900 Sen çeşit gibi hayal edebiliyorum Bir paketin gibi dönüyor. 521 00:28:45,900 --> 00:28:47,750 Ve bunu açtığınızda Paket, o da 522 00:28:47,750 --> 00:28:53,930 sonuç bir tamsayıyı sahiptir, ya da hiç o kesinlikle ilgisi yoktur. 523 00:28:53,930 --> 00:28:58,140 Ve bu bir hata denetimi olarak yararlıdır mekanizması nedeniyle bu durumda 524 00:28:58,140 --> 00:29:02,080 Biz öğrenebilirsiniz, bu oldu türü dönüştürme başarılı? 525 00:29:02,080 --> 00:29:05,810 Bu ise, daha sonra aslında içeride bir tamsayı olacak. 526 00:29:05,810 --> 00:29:08,750 Aksi takdirde bazı sahip olacak biz nil arayacağım değer olan 527 00:29:08,750 --> 00:29:10,920 hiç bir tamsayı temsil eder. 528 00:29:10,920 --> 00:29:13,270 Gerçekten hiçbir şey temsilcisi bulunuyor. 529 00:29:13,270 --> 00:29:18,130 >> Ve böylece eğer bu inşaat bize bu paket unwrap sağlar, 530 00:29:18,130 --> 00:29:19,850 bağlayıcı olduğunu opsiyonel. 531 00:29:19,850 --> 00:29:25,560 Ve biz o unwrap mümkün olup olmadığını paket ve içinde bir tamsayı bulmak, 532 00:29:25,560 --> 00:29:27,720 Sonra ne diyorsun Burada biz o zaman olacak olan 533 00:29:27,720 --> 00:29:33,090 bu değer olarak ayarlanmış olması için izin sınıf olarak adlandırılan bu sabit. 534 00:29:33,090 --> 00:29:36,590 Ve eğer ifadenin bu kısmı, eğer açıklamada üst kısmı 535 00:29:36,590 --> 00:29:40,390 çalıştırmak çünkü edecek unwrap başarılı oldu. 536 00:29:40,390 --> 00:29:43,290 >> Sadece bu yüzden Eğer bu gerçekleşirse Bir hata belki orada 537 00:29:43,290 --> 00:29:47,040 Bu açık tip dönüşüm Belki, bir tam sayıya bir dizeden 538 00:29:47,040 --> 00:29:49,160 örneğin değer ABC var. 539 00:29:49,160 --> 00:29:52,120 Ve aslında gidiş değil bir tamsayı dönüştürmek için. 540 00:29:52,120 --> 00:29:55,520 Daha sonra, nil döndürür hangi bir tamsayı değildir. 541 00:29:55,520 --> 00:29:57,570 Ve eğer bu deyimi de o başarısız. 542 00:29:57,570 --> 00:30:01,930 Çünkü yok edecek notu hiçbir tamsayı içeriğe sahiptir. 543 00:30:01,930 --> 00:30:06,391 Ve bunun yerine bu başka bloğu çalışacaktır. 544 00:30:06,391 --> 00:30:06,890 Evet? 545 00:30:06,890 --> 00:30:09,652 >> İZLEYİCİ: Nil N-I-L? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: nil yes, N-I-L. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Yani bu belki biri Swift hakkında en zor şey, 549 00:30:20,310 --> 00:30:23,690 Eğer konum özellikle iOS app üzerinde otlar 550 00:30:23,690 --> 00:30:27,442 ve aslında çalışıyoruz Orada bazı geliştirme yapmak için. 551 00:30:27,442 --> 00:30:29,400 Bu bağırıyor için gidiyor yaklaşık opsiyonel sana. 552 00:30:29,400 --> 00:30:33,050 Bunun için size soruyor gidiyor soru işaretleri ve ünlem işaretleri. 553 00:30:33,050 --> 00:30:37,100 Ama eğer sen konrtol anlamaya bir kez bulmaktan biraz zaman ayırmaya 554 00:30:37,100 --> 00:30:41,990 Ne isteğe türleri ile oluyor Kendinize baş ağrısı bir çok tasarruf edersiniz 555 00:30:41,990 --> 00:30:46,040 Eğer çalıştığınız kadar Swift bir uygulama yazmak. 556 00:30:46,040 --> 00:30:47,660 >> Aslında çok güçlü bir özellik. 557 00:30:47,660 --> 00:30:49,826 Ve sadece gerekecek Şimdilik bunun için benim sözüme. 558 00:30:49,826 --> 00:30:52,620 Ama biz bu inşaat görürsünüz ve bazı diğerleri like it 559 00:30:52,620 --> 00:30:56,740 Diğer kaynak kodun bazı o Biz sadece biraz içinde size göstereceğim. 560 00:30:56,740 --> 00:31:00,440 >> Herhangi bir başlangıç ​​soruları burada var mı? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Yani önemli paket bir olduğunu İsteğe bağlı tip metatype tür. 563 00:31:08,690 --> 00:31:12,500 Ya, bir değere sahiptir ve o, sonra yaparsa 564 00:31:12,500 --> 00:31:18,110 belki ilişkili olduğu değere sahip olacaktır onunla, ya da hiçbir değeri yoktur, 565 00:31:18,110 --> 00:31:19,620 ve nil ile temsil edilir. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Bu geri kalanı belki de Beklediğiniz gibi. 568 00:31:28,870 --> 00:31:32,900 >> Yani kadar rampa edelim Zorluk yine. 569 00:31:32,900 --> 00:31:37,070 Ve bu sefer, biraz bir göz atalım gerçekten var diğer veri türleri. 570 00:31:37,070 --> 00:31:41,290 Bunlardan biri olan sözlükler Python sözlükleri çok benzer. 571 00:31:41,290 --> 00:31:48,270 Bir hash tablosunda biraz benziyor C. Bu aslında anahtarlarının bir eşleme 572 00:31:48,270 --> 00:31:49,820 nerede tuşları dizeleri olabilir. 573 00:31:49,820 --> 00:31:52,670 Ve o anahtarları baktığınızda, Bu tuşlar değerine sahip olacaktır. 574 00:31:52,670 --> 00:31:56,020 Bu yüzden oldukça bir dizi değil ama bunun yerine, daha yakından ilişkili 575 00:31:56,020 --> 00:31:58,810 karma harita ya da bir karma tablo. 576 00:31:58,810 --> 00:32:02,420 >> Şimdi bu sözde nasıl görelim Aslında biz önce çalışmak için 577 00:32:02,420 --> 00:32:05,210 kaynak koduna kendisi gitmek. 578 00:32:05,210 --> 00:32:07,680 Ben sadece bu çalıştırırsanız, hiçbir şey gerçekten olmuyor. 579 00:32:07,680 --> 00:32:12,430 Ben bekliyorum o bana söylüyor Aşağıdaki Çeşidi bazı parametreler. 580 00:32:12,430 --> 00:32:16,050 Yani sağlamak için gidiyorum bazı sorun ayarlamak isimler, 581 00:32:16,050 --> 00:32:18,490 yani pset0, belki ben 100 aldım. 582 00:32:18,490 --> 00:32:20,790 Ve pset1, ben bir 5 var. 583 00:32:20,790 --> 00:32:24,630 Ve sonra sınavda, ben Gerçekten de yaptım ve 30 aldım. 584 00:32:24,630 --> 00:32:27,180 Ve hop, ben burada bir boşluk çarptı. 585 00:32:27,180 --> 00:32:30,940 >> Ben Enter vurduğunuzda görebilirsiniz bazı hesaplama yapmaktadır. 586 00:32:30,940 --> 00:32:33,740 Bu gradebook üç olduğunu söylüyor sınıflarda, pset1, pset0, sınav. 587 00:32:33,740 --> 00:32:36,120 Ve gradebook vardır bu özel ortalama. 588 00:32:36,120 --> 00:32:38,370 Yani yine, biz çalışıyoruz Bu gradebook düşüncesi ile, 589 00:32:38,370 --> 00:32:44,650 ama biz iterating devam edeceğiz Bizim fonksiyonunun karmaşıklığı ile. 590 00:32:44,650 --> 00:32:47,650 >> Başlangıcında Yani, biz sadece konum bir işlevi oluşturmak için gidiyor o 591 00:32:47,650 --> 00:32:49,390 kullanım yazdırmak için sorumludur. 592 00:32:49,390 --> 00:32:51,920 Ve bu çıkış var hangi edecek fonksiyonu sadece 593 00:32:51,920 --> 00:32:53,710 zorla uygulamadan çıkın. 594 00:32:53,710 --> 00:32:56,530 Bu bir şey olmadığını iOS uygulaması kullanır. 595 00:32:56,530 --> 00:32:59,750 Bu, bu durumda, sadece Bir komut satırı argümanı ile. 596 00:32:59,750 --> 00:33:01,990 Sonraki biz Xcode doğru hareket başlayacağız. 597 00:33:01,990 --> 00:33:07,760 Ancak bu bir komuta özgü Swift çizgi stili programı. 598 00:33:07,760 --> 00:33:11,490 >> En bazılarına bir göz atalım Burada ilginç şeyler. 599 00:33:11,490 --> 00:33:15,150 En sadece bir çift, görelim ilginç şeyler belki söz 600 00:33:15,150 --> 00:33:19,930 Bunun zaman fonksiyonu olan notların sayısını yazdırırken, 601 00:33:19,930 --> 00:33:26,090 Eğer ben o listeyi olduğunu hatırlamak olabilir items-- pset1, pset0 ve sınav. 602 00:33:26,090 --> 00:33:29,130 Aslında hızlı yapabilirsiniz ve kolayca bunu 603 00:33:29,130 --> 00:33:34,490 Bir olan gradebook, alarak anahtarlar ve değerler vardır sözlük. 604 00:33:34,490 --> 00:33:38,730 Anahtar bütün geçer bul Burada nokta tuşları yöntemi, 605 00:33:38,730 --> 00:33:43,180 ve daha sonra, bu joinWithSeparator kullanımı Daha sonra tuşları bütün alacak 606 00:33:43,180 --> 00:33:48,590 Biz yazmışsınız ki pset1-- veya üzgünüm, pset0, pset1 ve exam-- 607 00:33:48,590 --> 00:33:53,030 ve onları bir arada birleştirmek Virgül ve bir boşluk kullanarak 608 00:33:53,030 --> 00:33:55,400 Uzun bir dize oluşturmak için. 609 00:33:55,400 --> 00:34:00,190 Bu birleştirme işlemi sadece olağanüstü olduğunu çeşitli bağlamlarda yararlıdır. 610 00:34:00,190 --> 00:34:03,450 Ve böylece bu joinWithSeparator olduğunu. 611 00:34:03,450 --> 00:34:06,939 >> Ve bu var bir şey Swift 1 Swift 2 değiştirildi. 612 00:34:06,939 --> 00:34:08,730 Bir olmak için kullanılır Python style-- sen eğer 613 00:34:08,730 --> 00:34:13,219 Python-- bir Python aşina tarzı dizeleri yöntemini katılın. 614 00:34:13,219 --> 00:34:15,699 Ama bu artık Swift 2 durumda. 615 00:34:15,699 --> 00:34:19,400 İsterseniz bu kullanmak istiyorsanız şeyler bir dizi bitiştirmek için 616 00:34:19,400 --> 00:34:23,380 Birlikte bir dize ile. 617 00:34:23,380 --> 00:34:27,889 >> Yani belki de bizim o daha önce ortalama tartışılması, 618 00:34:27,889 --> 00:34:32,659 o biraz daha mantıklı Bizi ortalama işlevini ayarlamak için 619 00:34:32,659 --> 00:34:36,610 yerine isteğe bağlı bir çift olmak için sadece açık bir iki katından. 620 00:34:36,610 --> 00:34:39,239 Biz vardı çünkü olağandışı durum nerede, 621 00:34:39,239 --> 00:34:41,550 Ne gradebook aslında eğer Bunun içinde hiç değerlere sahip? 622 00:34:41,550 --> 00:34:44,280 Ne ortalama getiri gerekir? 623 00:34:44,280 --> 00:34:46,350 >> Belki C sen bir şey yapmış olurdu 624 00:34:46,350 --> 00:34:50,040 gibi, bir nöbetçi değer verilen benzeri 0.0 ya da belki negatif bir sayı, 625 00:34:50,040 --> 00:34:53,690 ya da bir şey sadece gerçeği temsil bazı hata koşulu olduğunu 626 00:34:53,690 --> 00:34:57,910 ve belki de aslında yok Bu ortalamayı hesaplamak için yeteneği. 627 00:34:57,910 --> 00:35:05,590 Peki bir belirterek güzellik İsteğe bağlı tip yapmak olacaktır. 628 00:35:05,590 --> 00:35:09,540 Ve ben şimdi tüm bu sözleri söyleyerek, ancak kulüpler Bu aslında Opsiyonlar kullanmaz. 629 00:35:09,540 --> 00:35:12,970 Ama biz sadece o görürsünüz Biz ortalama ayarlayabilirsiniz dakika 630 00:35:12,970 --> 00:35:17,230 Böylece isteğe bağlı veri türü olması aslında daha sonra bazı veriler, dönerse 631 00:35:17,230 --> 00:35:18,470 biz bu verileri dönecektir. 632 00:35:18,470 --> 00:35:20,570 Aksi takdirde biz dönecektir nil, bu söyleyerek 633 00:35:20,570 --> 00:35:22,200 anlamlı hesaplama vardır. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> En başka bir şey geçelim. 636 00:35:28,570 --> 00:35:35,910 Buradan Yani, biz bakarak oldum Komut satırında bütün bu örnekler. 637 00:35:35,910 --> 00:35:39,470 Ama gerçekten gidiyoruz ile başa çıkmak için Xcode olduğunu. 638 00:35:39,470 --> 00:35:43,720 Ve hakkında güzel şeylerden biri Xcode ve özellikle Swift, 639 00:35:43,720 --> 00:35:47,450 Bu olmasıdır şey Playground çağırdı. 640 00:35:47,450 --> 00:35:51,470 Ve Bahçesi olduğunu tüm iOS app. 641 00:35:51,470 --> 00:35:54,751 Ama bunu denemesini sağlar Çok kolay bir şekilde Swift ile. 642 00:35:54,751 --> 00:35:56,000 Eğer tüm kodu yazabilirsiniz. 643 00:35:56,000 --> 00:35:58,140 Bu güzel burada vurgulanan sözdizimi. 644 00:35:58,140 --> 00:36:01,600 Eğer yeni bir dosya oluşturduğunuzda, bu soracaktır Eğer bir Playground oluşturmak istiyorsanız. 645 00:36:01,600 --> 00:36:08,720 Ama Playground hakkında güzel bir şey Bu, pencerenizin sağ tarafta 646 00:36:08,720 --> 00:36:12,020 aslında size göstermek yok kodundan çıktı. 647 00:36:12,020 --> 00:36:16,110 Ben aşağı doğru ilerleyin Yani, ne görebilirsiniz çeşitli kod satırları çıkışı 648 00:36:16,110 --> 00:36:17,200 Aslında olması umulur. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Bu durumda, bu yüzden biz gidiyoruz Tarif birazcık değiştirmek 651 00:36:26,790 --> 00:36:30,960 ve gerçekten bir şey hakkında konuşmak Bu üst düzey şekilde önemli 652 00:36:30,960 --> 00:36:34,020 Swift, onu ve işlediğini kilitler bu fikir. 653 00:36:34,020 --> 00:36:36,960 Ve muhtemelen bu gördüm JavaScript biraz. 654 00:36:36,960 --> 00:36:40,770 O sizin bunun için CS50 olduğunu kapaklar 655 00:36:40,770 --> 00:36:47,240 yapmanın çok popüler, çok iyi bir yoldur Modern dilde üst düzey şeyler. 656 00:36:47,240 --> 00:36:50,270 Ama aynı zamanda bir tür zor İlk defa başınızın etrafında sarmak. 657 00:36:50,270 --> 00:36:52,269 Bu bakarak Yani İlk kez, sorun değil. 658 00:36:52,269 --> 00:36:56,740 Sadece kaynak koduna bakmak ve görmek evde bunu anlamaya eğer. 659 00:36:56,740 --> 00:37:01,050 >> Bu durumda Yani, diyelim biz Çin'li bir sürü oluşturmak istiyorum 660 00:37:01,050 --> 00:37:04,134 bazı sabit değer ile. 661 00:37:04,134 --> 00:37:05,800 Yani bu durumda ben bir işlev oluşturabilirsiniz. 662 00:37:05,800 --> 00:37:09,270 Ben güç aramak için gidiyorum Hayatta 2 tek amacı 663 00:37:09,270 --> 00:37:15,770 Bazı giriş ve çift almaktır o, ve bu değeri döndürür. 664 00:37:15,770 --> 00:37:21,210 Ben burada dikkat edin Verilerin bir tür kabul. 665 00:37:21,210 --> 00:37:23,137 Bu x adında bir değişken olacak. 666 00:37:23,137 --> 00:37:23,970 Bu tip Double var. 667 00:37:23,970 --> 00:37:26,190 Ve ben burada Çift dönmek için gidiyorum. 668 00:37:26,190 --> 00:37:29,100 Ve ben sadece yapacağım Çok, açıkçası, oldukça 669 00:37:29,100 --> 00:37:32,650 Bu değeri iki katına naif bir yol. 670 00:37:32,650 --> 00:37:35,600 Ve seni neden bu göstereceğim Bir saniye içinde yararlıdır. 671 00:37:35,600 --> 00:37:40,418 >> Bu dizi var burada edin tekrar. 1 bir şey, nokta için 672 00:37:40,418 --> 00:37:44,130 yani dot dot, 2, Bu döngü iki kere çalışacaktır. 673 00:37:44,130 --> 00:37:46,480 Ama bu bir kukla değişken temsil eder. 674 00:37:46,480 --> 00:37:49,650 O gerçekten gitmiyorum demek her yerde bu değişken kullanarak 675 00:37:49,650 --> 00:37:51,070 Bu döngü içinde. 676 00:37:51,070 --> 00:37:55,380 Ben sadece bu çizgiyi istiyorum kod iki çalıştırmak için, 677 00:37:55,380 --> 00:37:58,980 bilmek gerek kalmadan bu aralığın değeri. 678 00:37:58,980 --> 00:38:02,570 >> Bu durumda ben sonucu koşuyorum Yani Zaman olan esas olarak iki kez, x 679 00:38:02,570 --> 00:38:06,560 Bu değer karesi ediyorum demektir. 680 00:38:06,560 --> 00:38:10,230 Ve bu olur Biz beklediğiniz gibi çalışır. 681 00:38:10,230 --> 00:38:16,410 2 Güç, bir değer geçirerek 2.0 bize 4 bir çıkış verir. 682 00:38:16,410 --> 00:38:18,810 10.24 3.2 çalışır. 683 00:38:18,810 --> 00:38:22,660 >> Şimdi benzer bir yapabileceğimiz 3 güç bir şey. 684 00:38:22,660 --> 00:38:25,330 Ama şimdi sadece aralığını değiştirmek. 685 00:38:25,330 --> 00:38:28,840 1 kukla değişkeni için 3'e kadar, 3 kez çarpın 686 00:38:28,840 --> 00:38:29,830 ve aynı şeyi yapmak. 687 00:38:29,830 --> 00:38:32,240 >> Yani bu biraz yapmacık hissedebilirsiniz. 688 00:38:32,240 --> 00:38:34,270 Ama önemli bir var Burada bir şey ki 689 00:38:34,270 --> 00:38:37,770 Bu bakarak olduğunu iki fonksiyon, var 690 00:38:37,770 --> 00:38:43,600 farklı tek şey, bu dizi bu değerdir. 691 00:38:43,600 --> 00:38:46,910 Bu iki hakkında her şey fonksiyonlar, 3 güç ve 2 güç, 692 00:38:46,910 --> 00:38:50,440 , aslında, aynı nedeniyle aynı şekilde çalışır. 693 00:38:50,440 --> 00:38:53,460 >> Bu noktada, küçük yüzden Alarm zili gidiyor olmalıdır. 694 00:38:53,460 --> 00:38:56,200 Umarım dediğini, bilirsin, bu biraz hissediyor 695 00:38:56,200 --> 00:38:59,250 çaba çoğaltılması gibi. 696 00:38:59,250 --> 00:39:02,950 Belki bir yol olduğunu isterim var Tüm bu kapsülleyen mümkün 697 00:39:02,950 --> 00:39:06,630 ve işlevi sağlamak veya bir işlev oluşturmak 698 00:39:06,630 --> 00:39:11,550 Tam ben olmadan ne istediğini yapar açıkça yazın dışarı gerek. 699 00:39:11,550 --> 00:39:15,732 Ve bu ne güç olduğunu Bir kapağın yapmamızı sağlar. 700 00:39:15,732 --> 00:39:16,940 Yani bu bir göz atalım. 701 00:39:16,940 --> 00:39:18,700 Ve ben bir çift harcayacağınız Bu konuda dakikada bu çünkü 702 00:39:18,700 --> 00:39:20,310 Swift için oldukça önemlidir. 703 00:39:20,310 --> 00:39:22,900 Biz bu her zaman görüyorum. 704 00:39:22,900 --> 00:39:24,550 Biz bir işlev tanımlamak için gidiyoruz. 705 00:39:24,550 --> 00:39:26,380 Bu powerOf çağrılacak gidiyor. 706 00:39:26,380 --> 00:39:29,470 Bu kabul gidiyor parametre türü Int y denir. 707 00:39:29,470 --> 00:39:32,220 Ama dönüş türü bir göz atın. 708 00:39:32,220 --> 00:39:38,730 Dönüş türü olarak, bir Parantez, Çift Çift ok. 709 00:39:38,730 --> 00:39:43,370 Bu fonksiyon, yani bu fonksiyon powerOf, 710 00:39:43,370 --> 00:39:46,550 bir işlev geri dönüyor. 711 00:39:46,550 --> 00:39:50,845 Bu bir Çift kabul ediyor ve Çift dönen. 712 00:39:50,845 --> 00:39:53,720 Yani o çılgın tür gelebilir, ama en biraz aşağı kaydırma izin 713 00:39:53,720 --> 00:39:55,060 ve ne olacağını görmek için sabırsızlanıyoruz. 714 00:39:55,060 --> 00:39:57,910 Bu fonksiyon powerOf içinde konum. 715 00:39:57,910 --> 00:40:00,760 Biz yeni bir fonksiyon oluşturuyoruz exponentiator denilen 716 00:40:00,760 --> 00:40:02,900 ama bunun ne önemi yok. 717 00:40:02,900 --> 00:40:06,410 >> Bu olduğunu fark x bir giriş değeri. 718 00:40:06,410 --> 00:40:09,910 Ve bir Double alıyor ve Çift dönen. 719 00:40:09,910 --> 00:40:16,320 Ve bu aynı kod olduğunu biz 2 değeri hariç, yukarıda gördüğümüz 720 00:40:16,320 --> 00:40:20,060 3 ya da değer, o bu aralıkta bağlı üst, 721 00:40:20,060 --> 00:40:23,210 ile değiştirilmiştir y bu değer, burada 722 00:40:23,210 --> 00:40:27,230 İlk parametre olduğu Bizim powerOf fonksiyonunun. 723 00:40:27,230 --> 00:40:31,700 Ve bu noktada, biz exponentiator döner. 724 00:40:31,700 --> 00:40:33,345 Biz fonksiyonu dönen ediyoruz. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Bu tür küçük bir zihin üfleme gibi. 727 00:40:39,550 --> 00:40:44,360 Ama ne düşünelim Ben bu işlevini çağırdığınızda powerOf 728 00:40:44,360 --> 00:40:47,610 ve 2 gibi içine bazı değer geçmektedir. 729 00:40:47,610 --> 00:40:50,020 Bunun anlamı olduğunu Ben şimdi değere sahip 730 00:40:50,020 --> 00:40:55,130 Bu değer anlamına gelir y 2, Bu exponentiator fonksiyon y 731 00:40:55,130 --> 00:40:56,410 Bu değer 2 olacaktır. 732 00:40:56,410 --> 00:41:01,290 Ama bu geri veriyorum exponentiator işlevi. 733 00:41:01,290 --> 00:41:05,900 >> Yani Swift I ne diyor fark Bu durumda oluşturduk. 734 00:41:05,900 --> 00:41:10,550 Kare, bir tanım var let Bir Çift kabul eden bir işlev 735 00:41:10,550 --> 00:41:12,610 ve Çift döndürür. 736 00:41:12,610 --> 00:41:16,590 Ben bir işlevi oluşturduk kareler bir şey olduğunu 737 00:41:16,590 --> 00:41:19,782 Burada bu mekanizmayı kullanarak. 738 00:41:19,782 --> 00:41:22,490 Ve gerçekten neler olduğunu bu fonksiyon geri olduğu 739 00:41:22,490 --> 00:41:26,390 exponentiator, ancak bu değer y bunun içinde sarılır. 740 00:41:26,390 --> 00:41:31,080 Ve şimdi her zaman bunu kullanın Değişken veya sabit olarak adlandırılan bu 741 00:41:31,080 --> 00:41:35,180 kare, o gidiyor bir fonksiyonu olarak davranmaya. 742 00:41:35,180 --> 00:41:39,960 Ve bu yüzden o değişken çağırabilirsiniz gibi bir işlevi çağırır, 743 00:41:39,960 --> 00:41:43,830 ve içine bir sayı geçmesi, Bu durumda 3 gibi. 744 00:41:43,830 --> 00:41:45,910 Ve ben o zaman bu değer kare olacak. 745 00:41:45,910 --> 00:41:53,340 Yani 3 sonra olacak karesi Burada gördüğünüz gibi, 9 olur. 746 00:41:53,340 --> 00:41:56,530 >> Gerçekten deli, ama bu artık Bana fırsat veriyor 747 00:41:56,530 --> 00:41:59,040 Diğer powerOf işlevler oluşturmak. 748 00:41:59,040 --> 00:42:03,680 Ben tamam, şimdi de ben istiyorum, söyleyebilirim gibi Yeni bir işlev oluşturmak için, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 ve içine saklamak sürekli olarak adlandırılan küp. 750 00:42:06,290 --> 00:42:10,220 Ve şimdi küp olacak Daha sonra olacak ayrı fonksiyonu 751 00:42:10,220 --> 00:42:14,800 girdi ve küp gibi bazı değer alması Biz alt satırında gördüğünüz gibi değer 752 00:42:14,800 --> 00:42:16,420 İşte. 753 00:42:16,420 --> 00:42:18,590 2 küp 8 neden oluyor. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Umarım oldukça düzgün şeyler. 756 00:42:22,680 --> 00:42:25,920 Bunu daha önce hiç görmemiştim. 757 00:42:25,920 --> 00:42:29,990 Ben kapanışları içine bakmak için teşvik ve biraz daha bu araştırmak. 758 00:42:29,990 --> 00:42:33,570 Biz çok güçlü bir şeyler gerçekten görecek JavaScript ve diğer bazı dillerde. 759 00:42:33,570 --> 00:42:37,160 Bu gerçekten çok önemli olduğunu yanı sıra API'leri anlamak 760 00:42:37,160 --> 00:42:38,620 biz sadece bir saniye içinde elde edeceğiz. 761 00:42:38,620 --> 00:42:39,456 Evet? 762 00:42:39,456 --> 00:42:43,740 >> HEDEF KİTLE: Ne zaman yapmak powerOf (2), parantez, ve sonra 763 00:42:43,740 --> 00:42:48,764 Başka bir parantez bir input-- temelde kare yerine ediyoruz. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Yani bak Burada çok son satırında. 765 00:42:50,930 --> 00:42:55,930 Aslında tamamen mümkün Eğer önerdiği gibi zincirleme bunu. 766 00:42:55,930 --> 00:43:00,990 Yani powerOf (5) gidiyoruz demektir Burada 5 bir exponentiator var. 767 00:43:00,990 --> 00:43:04,160 Yani bu temelde olacak Beşinci güç 4 aynı şey, 768 00:43:04,160 --> 00:43:07,200 biz exponentiating yarattık çünkü Beşinci güç işlevi, 769 00:43:07,200 --> 00:43:09,920 ve biz içine geçiyoruz Bu değeri 4 çalışır. 770 00:43:09,920 --> 00:43:12,619 Ve biz bu değeri elde biz 1024 bekleyebilirsiniz söyledi. 771 00:43:12,619 --> 00:43:14,785 HEDEF KİTLE: Ve bu değil o kolaylaştırır, böylece isim 772 00:43:14,785 --> 00:43:16,570 ne olursa olsun kare okumak için. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: Doğru, aynen. 774 00:43:17,903 --> 00:43:21,120 Ben sadece bunu koymadan önce Yani burada çok sabit içine 775 00:43:21,120 --> 00:43:23,808 o yapılan o kadar kolay adını kullanmaya. 776 00:43:23,808 --> 00:43:24,308 Evet? 777 00:43:24,308 --> 00:43:26,942 >> İZLEYİCİ: Bu bağlamda powerOf, bu parçası 778 00:43:26,942 --> 00:43:30,774 programlama dilinin Bu arada size karşı 779 00:43:30,774 --> 00:43:33,952 [duyulamaz] içinde powerOf düşünüyorum? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: Yani bu durumda, powerOf 781 00:43:35,660 --> 00:43:39,280 basitçe adı Ben burada tanımlı fonksiyon. 782 00:43:39,280 --> 00:43:41,801 Yani doğal değil dil kendisi, 783 00:43:41,801 --> 00:43:43,550 ancak bunun yerine, bu sadece bir işlev 784 00:43:43,550 --> 00:43:45,628 Bu isim ben bunu o isim verin çünkü. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Başka soru? 787 00:43:51,920 --> 00:43:52,800 Pekala. 788 00:43:52,800 --> 00:43:54,750 >> Şimdi bu harika. 789 00:43:54,750 --> 00:43:58,170 Ama bir görmeye gitmiyoruz kapatma fonksiyonları çok o 790 00:43:58,170 --> 00:44:03,440 tanımladığınız içinde nerede, bu gibi tek işlevi, başka fonksiyonun. 791 00:44:03,440 --> 00:44:04,320 Ve bunu yapabilirsin. 792 00:44:04,320 --> 00:44:06,430 Ama bu tür değil gerçekten gerekli, değil mi? 793 00:44:06,430 --> 00:44:09,189 Ben bu tanımlamak neden gibi işlevi çağrılır exponentiator 794 00:44:09,189 --> 00:44:10,480 ve hemen ardından geri. 795 00:44:10,480 --> 00:44:15,220 Neden olamaz ben sadece hemen Bu fonksiyonu dönüş? 796 00:44:15,220 --> 00:44:18,890 >> Ve aslında, bu tam da denilen bir kavram arkasındaki fikir 797 00:44:18,890 --> 00:44:22,410 Anonim fonksiyonlar, Anonim işlevler aslında yok 798 00:44:22,410 --> 00:44:25,270 çünkü onlar bir isim var bir tane gerekmez. 799 00:44:25,270 --> 00:44:28,700 Böylece bu durumda, 7B'de, Biz tam da bulabilirsiniz. 800 00:44:28,700 --> 00:44:31,470 Bu, aynı kodu tam olarak aynı şeyi yapar 801 00:44:31,470 --> 00:44:35,570 ama şimdi o kadar hafifçe değiştirdik bu powerOf fonksiyon hemen 802 00:44:35,570 --> 00:44:37,750 Bir işlevi döndürür. 803 00:44:37,750 --> 00:44:44,150 Döndükten sonra dikkat edin, Açık kıvırcık parantez var. 804 00:44:44,150 --> 00:44:46,410 Bu girişi Çift bekliyor. 805 00:44:46,410 --> 00:44:48,560 O çıktı Çift bekliyor. 806 00:44:48,560 --> 00:44:52,175 Ve sonra anahtar kelime kod kendisi ayırır. 807 00:44:52,175 --> 00:44:53,550 Yani bu bir anonim bir işlevdir. 808 00:44:53,550 --> 00:44:57,030 Aslında, oysa bir adı yok önce exponentiator denirdi. 809 00:44:57,030 --> 00:45:00,229 Ama biz sadece gerçekten, gördüğümüz gibi exponentiator bakın vermedi 810 00:45:00,229 --> 00:45:01,270 Bu işlevin dışında. 811 00:45:01,270 --> 00:45:02,470 Yani önemli değildi. 812 00:45:02,470 --> 00:45:06,300 Yani bu anonim bir fonksiyondur isimsiz olduğu sözde 813 00:45:06,300 --> 00:45:09,107 ama yine de kullanılan ediliyor Bu kodun bağlamında açıklanmamıştır. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Ben önümüzdeki birkaç olanlar Umarım devam edecek 816 00:45:16,079 --> 00:45:17,370 Aklını biraz üfleme. 817 00:45:17,370 --> 00:45:20,410 Biz bu daha da kolaylaştırabilirsiniz. 818 00:45:20,410 --> 00:45:24,490 Zekice olarak nedeniyle daha önce işaret 819 00:45:24,490 --> 00:45:29,100 belki biz aslında tarafından, biliyorum Bu koddan çıkarım ne 820 00:45:29,100 --> 00:45:31,750 Bu kodun çıktısı olacak. 821 00:45:31,750 --> 00:45:38,180 Ve aslında, bu anonim fonksiyon, Biz aslında veri türlerini çıkarabiliriz. 822 00:45:38,180 --> 00:45:41,650 >> Yani bu bir, biz artık Açıkça tanımlamanız gerekir 823 00:45:41,650 --> 00:45:44,850 davranıyor veri türü Bu işlevi, giriş ve çıkış 824 00:45:44,850 --> 00:45:45,890 nedenlerle bir çift için. 825 00:45:45,890 --> 00:45:51,390 Bir biz yukarı, tanımladığınız olduğunu parça işlevi prototipi 826 00:45:51,390 --> 00:45:55,770 veri bu anonim ne tür Fonksiyon giriş ve çıkış olmalı. 827 00:45:55,770 --> 00:45:57,900 Ve diğerinden biz kodundan çıkarabileceği 828 00:45:57,900 --> 00:46:01,930 Buraya biz kabul ettiğinizi Çift türüdür girişi 829 00:46:01,930 --> 00:46:03,670 ve Çift dönen. 830 00:46:03,670 --> 00:46:07,890 >> Biz açıkça değil var burada dikkat edin argümanların isimlerini tanımlanmış 831 00:46:07,890 --> 00:46:11,220 bu işlev kabul ediyor. 832 00:46:11,220 --> 00:46:16,180 Ve bu yüzden biz başvurabilirsiniz bakın $ 0 $ 1 kullanarak bu parametreler, 833 00:46:16,180 --> 00:46:20,140 böylece vb bağlı olarak kullanılan parametrenin numarası 834 00:46:20,140 --> 00:46:20,850 Bu işlevi. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> Bu gidiyorsun şey Bir sürü bu açık kıvırcık parantez görmek için 837 00:46:29,740 --> 00:46:32,797 tanım ardından 0 $ ve daha sonra bazı operasyon, 838 00:46:32,797 --> 00:46:34,130 ve daha sonra kapalı kıvırcık parantez. 839 00:46:34,130 --> 00:46:38,630 Bu bir anonim bir fonksiyondur bu işlemi gerçekleştirir. 840 00:46:38,630 --> 00:46:42,940 Bu parametreyi nerede var bu tip olayla konumdur. 841 00:46:42,940 --> 00:46:44,860 Bu ilk parametresi $ 0'dır. 842 00:46:44,860 --> 00:46:49,010 Ve bazı operasyon Bu $ 0 oluyor. 843 00:46:49,010 --> 00:46:52,100 >> HEDEF KİTLE: Dolar işareti So temelde parametreyi demektir 844 00:46:52,100 --> 00:46:53,429 ve 0 ilki demektir? 845 00:46:53,429 --> 00:46:54,720 DAN Armendariz: Doğru. 846 00:46:54,720 --> 00:46:59,100 Yani dolar işareti temelde anlamına gelir Parametre ve 0 birincisini demektir. 847 00:46:59,100 --> 00:47:02,760 Ama spesifik olarak çalışıyor Ben adında değil bu durumda 848 00:47:02,760 --> 00:47:07,940 Benim anonim işlevinde argümanlar. 849 00:47:07,940 --> 00:47:11,119 >> HEDEF KİTLE: Perl falan var mı Orada bu dolar işareti, dolar 0? 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz: Üzgünüm, hangi mı? 851 00:47:12,702 --> 00:47:15,360 HEDEF KİTLE: Perl var mı Bu dolar 0, dolar 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: Ben değilim Perl ile çok tanıdık, 853 00:47:17,318 --> 00:47:21,340 ama PHP nedir değişkenleri tanımlar Dolar işaretleri dayalı. 854 00:47:21,340 --> 00:47:26,120 Ve bazı diller olabilir Bu gibi özelliklere sahip olduğunu. 855 00:47:26,120 --> 00:47:28,240 Aslında, Swift ödünç bir Bu gibi özellikler çok 856 00:47:28,240 --> 00:47:29,489 Diğer dillerde bir sürü gelen. 857 00:47:29,489 --> 00:47:32,380 Biz bunun içinde Python ipuçlarını görebilirsiniz. 858 00:47:32,380 --> 00:47:35,800 Bu tip tanımlaması OCaml geliyor gibi görünüyor. 859 00:47:35,800 --> 00:47:38,932 Ve biz sadece bir sürü var farklı dil sürü şeyler. 860 00:47:38,932 --> 00:47:40,640 Bu güzel biri Swift hakkında şeyler 861 00:47:40,640 --> 00:47:43,390 en iyi bir sürü alır ki dil demet fikirler 862 00:47:43,390 --> 00:47:47,229 ve hepsini bir araya ayakkabı çekecekleri tek süper dile. 863 00:47:47,229 --> 00:47:49,520 Aslında, eğer beni izin Aklını üfleme devam 864 00:47:49,520 --> 00:47:51,000 bu yüzden tüm bu yapıyorum. 865 00:47:51,000 --> 00:47:56,690 Biz belki bu biraz kolaylaştırabilirsiniz Tabii ki gerçekleştirerek bit, 866 00:47:56,690 --> 00:48:02,120 Swift bir exponentiating vardır fonksiyon inşa. 867 00:48:02,120 --> 00:48:04,660 Ben Darwin, içe aktarırsanız hangi Sadece kütüphane olduğunu 868 00:48:04,660 --> 00:48:09,680 Şimdi, bu işlevi çağrılır pow özellikleri Ben işlevi Gücümü kolaylaştırabilirsiniz 869 00:48:09,680 --> 00:48:11,830 Aşağıdaki olmak. 870 00:48:11,830 --> 00:48:15,860 Bu iade olacak Bu anonim işlev. 871 00:48:15,860 --> 00:48:17,950 >> Ama bu şimdi ne kadar basit bakmak. 872 00:48:17,950 --> 00:48:22,780 Bu bir anonim işlev olduğunu veri çeşit kabul ediyor, 873 00:48:22,780 --> 00:48:26,600 ve biri olacak argüman özel olarak ise, 874 00:48:26,600 --> 00:48:29,320 tipi Double olduğunu $ 0 başvurulan. 875 00:48:29,320 --> 00:48:32,680 Bu bir tür çift geri gidiyor. 876 00:48:32,680 --> 00:48:35,760 Ama return deyimi Şimdi örtülü. 877 00:48:35,760 --> 00:48:39,990 >> Ve bu tam tarzı olduğunu , Swift çok yaygındır 878 00:48:39,990 --> 00:48:40,790 darmadağın. 879 00:48:40,790 --> 00:48:43,190 Biz bu görmeye gidiyoruz Swift her zaman. 880 00:48:43,190 --> 00:48:46,150 Yani bu, tüm gösteren kulüpler Bu sözdizimi nedeniyle. 881 00:48:46,150 --> 00:48:49,070 Bu çok yaygın Bunu anlamı, görmek için 882 00:48:49,070 --> 00:48:51,420 bir anonim bir fonksiyondur Bu gerçekleştiriyor 883 00:48:51,420 --> 00:48:54,640 Bu argümanların bazı çalışma. 884 00:48:54,640 --> 00:48:56,940 Ve bir örtülü dönüş yoktur. 885 00:48:56,940 --> 00:49:01,850 Yani kesinlikle aynı şey Bizi burada, bu demek için. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Bu Kıvırcık Çünkü aparatı, bir fonksiyonudur 888 00:49:08,150 --> 00:49:10,480 Bu işlemi gerçekleştirmek konum ilk argüman üzerinde. 889 00:49:10,480 --> 00:49:12,170 Biz geri gidiyoruz. 890 00:49:12,170 --> 00:49:14,815 Ama bu dış dönüş bütün o işlevi dönen, 891 00:49:14,815 --> 00:49:19,855 o bütün anonim işlev biz sadece oluşturduğunuz ettik. 892 00:49:19,855 --> 00:49:21,689 Başka soru? 893 00:49:21,689 --> 00:49:23,980 Pekala, ben bilmiyorum Siz, bu hazır 894 00:49:23,980 --> 00:49:27,455 ama biz Swift bile deli gidebilirsiniz. 895 00:49:27,455 --> 00:49:28,560 Hazır mısın? 896 00:49:28,560 --> 00:49:29,930 Tamam, bu harika. 897 00:49:29,930 --> 00:49:35,310 >> Şimdi biz aslında yeteneğine sahip için, Swift, çünkü nasıl modüler bir 898 00:49:35,310 --> 00:49:39,650 protokol tabanlı nasıl ve karşı olduğunu Kendi lanet operatörleri tanımlar. 899 00:49:39,650 --> 00:49:44,060 Bu durumda gibi, biz hiçbir iyi exponentiation-- operatör, 900 00:49:44,060 --> 00:49:47,990 şey yetkilerini gerçekleştirmek için. 901 00:49:47,990 --> 00:49:53,632 Ama ben, Swift, yeni tanımlayabilirsiniz tam da bunu yapar operatör. 902 00:49:53,632 --> 00:49:55,590 Yani bu durumda var Burada sözdizimi bir demet. 903 00:49:55,590 --> 00:49:59,980 Ve seni ona bakmak için izin verirsiniz evde bu baktığınızda. 904 00:49:59,980 --> 00:50:06,890 Ama biz bu infix tanımlıyoruz Operatör, **, bu daha sonra, bize izin verecek 905 00:50:06,890 --> 00:50:09,840 ne anlama tanımlayarak fonksiyonu ** aslında 906 00:50:09,840 --> 00:50:15,010 sol elini kabul etmek etmez tarafında ve sağ taraftaki, 907 00:50:15,010 --> 00:50:21,190 ve daha sonra bunun üssü dönmek için sağ tarafına sol taraf. 908 00:50:21,190 --> 00:50:24,850 >> Ve şimdi birdenbire I tüm Yeni pay oluşturduk. 909 00:50:24,850 --> 00:50:29,490 Yani 2 ** 3 üncü güce 2 anlamına gelir. 910 00:50:29,490 --> 00:50:34,420 [ZİHİN ÜFLEME SES] Tarafından kendisi, sen gibi yapmak gerekir 911 00:50:34,420 --> 00:50:37,960 Tamam, vida C. ben gidiyorum Swift tüm yol. 912 00:50:37,960 --> 00:50:38,740 Bu harika. 913 00:50:38,740 --> 00:50:40,140 Bu güzel harika. 914 00:50:40,140 --> 00:50:42,240 >> Gerçi bu büyük bir örnektir. 915 00:50:42,240 --> 00:50:45,570 Ama bir kez dışında asla Bu örnekte, aslında 916 00:50:45,570 --> 00:50:46,800 Kendi operatörü tanımlamıştır. 917 00:50:46,800 --> 00:50:49,710 Ama yine de, bu gösterir Swift gücünün çok 918 00:50:49,710 --> 00:50:54,050 ve bu aslında neden Gerçekten çok güzel. 919 00:50:54,050 --> 00:50:55,832 Tamam evet? 920 00:50:55,832 --> 00:50:57,790 HEDEF KİTLE: Eğer konum Kendi operatörü tanımlayan 921 00:50:57,790 --> 00:51:02,940 Eğer yanlışlıkla bilmiyorsanız nasıl denemek ve bu bir operatöre oluşturmak 922 00:51:02,940 --> 00:51:06,040 C bir yerlerde gibi Swift yerde gizli, 923 00:51:06,040 --> 00:51:12,210 bilinmeyen bir gibi size daha önce görmemiş olabilirsiniz. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendariz: Eğer çalışıyorsanız yüzden Kendi operatörleri tanımlamak için, 925 00:51:15,050 --> 00:51:20,970 tanımlama riski vardır Varolan operatör üzerinden bir. 926 00:51:20,970 --> 00:51:24,870 Bu ayrıntı seviyesinde olduğu gider Biz üzerine gitmek için zamanımız olduğunu sanmıyorum. 927 00:51:24,870 --> 00:51:27,620 Ama bu bir risktir. 928 00:51:27,620 --> 00:51:31,320 Ve bu çok nedeni aslında Ben şapka sembolü kullanmak vermedi 929 00:51:31,320 --> 00:51:36,210 İktidarı dışarı yazarken, genellikle 4 küçük şapka 5 veya bir şey kullanmak 930 00:51:36,210 --> 00:51:40,560 bunun gibi, sadece biz olduğunuzda Arkadaşları ya da her neyse Gchatting. 931 00:51:40,560 --> 00:51:43,660 Ama bu durumda, aslında bir çarpışma neden olurdu. 932 00:51:43,660 --> 00:51:46,450 Ve bu yüzden, sırf bu kaçınılması Ben bu durumda bilmek oldu 933 00:51:46,450 --> 00:51:50,430 o çarpışmaya neden olacağını söyledi. 934 00:51:50,430 --> 00:51:52,270 >> Pekala. 935 00:51:52,270 --> 00:51:55,080 Şimdi, ne yazık ki, için Son yedi dakika 936 00:51:55,080 --> 00:51:57,410 Ben üfleme tutmak zorunda senin kafasında biraz. 937 00:51:57,410 --> 00:52:00,230 Bu yüzden sana göstermek için izin Bazı başka şeyler de. 938 00:52:00,230 --> 00:52:03,710 >> Biz size bu fikri gösterilir ettik Bu anonim fonksiyonları olan, 939 00:52:03,710 --> 00:52:07,040 size izin bu kapaklar tür etrafında fonksiyonlarını geçmektedir. 940 00:52:07,040 --> 00:52:08,100 Bunları dönebilirsiniz. 941 00:52:08,100 --> 00:52:09,490 Bunları işleyebilirsiniz. 942 00:52:09,490 --> 00:52:11,790 Sen delisin şeyler her türlü yapabilirsiniz. 943 00:52:11,790 --> 00:52:14,850 >> Ama bir başka şey yararlı olur 944 00:52:14,850 --> 00:52:19,740 yeteneği, karşı koymak için olduğu gibi bu işlevleri dönen 945 00:52:19,740 --> 00:52:25,146 bir işlev, bir işlevi geçmek başka bir işleve parametre olarak. 946 00:52:25,146 --> 00:52:30,430 Dünya'da neden iyi düşünce olabilir Ben böyle bir şey yapmak istersiniz? 947 00:52:30,430 --> 00:52:33,660 >> Peki, ben istiyorum diyelim Bu operatörü almak ben 948 00:52:33,660 --> 00:52:40,260 çalıştı çok zor oluşturmak ve uygulamak Farklı sayıların bir demet o 949 00:52:40,260 --> 00:52:41,770 Bir dizideki. 950 00:52:41,770 --> 00:52:46,700 Yani bu durumda ben bir dizi var 1, 4, 7, 2, 5, 10, 56 integers--. 951 00:52:46,700 --> 00:52:48,080 Ve ben hepsini ikiye katlamak istiyoruz. 952 00:52:48,080 --> 00:52:50,430 Yolu, biz genellikle olur Sadece yazmak için yapmak 953 00:52:50,430 --> 00:52:53,440 döngüsü için basit olduğunu bunların hepsi üzerinde dolaşır 954 00:52:53,440 --> 00:52:57,140 ve çeşit gerçekleştirmek Üzerlerine kare operasyon, 955 00:52:57,140 --> 00:53:02,700 Yeni içine bu yeni değerler girerek Değişken, daha doğrusu, burada yeni bir dizi. 956 00:53:02,700 --> 00:53:07,370 Ve çıkış değeri Sonuç, daha sonra bu dizilerin hepsi 957 00:53:07,370 --> 00:53:10,200 ya da daha doğrusu bunların hepsi elemanları şimdi karesi. 958 00:53:10,200 --> 00:53:12,680 >> Ve biz aynı yapabileceğini Bunu cubing için bir şey, 959 00:53:12,680 --> 00:53:15,360 ama biraz alarm zili gerektiği kapalı olacak 960 00:53:15,360 --> 00:53:17,360 belki orada olduğunu söyleyerek Bazı yolu biz olur 961 00:53:17,360 --> 00:53:19,860 Bu biraz basitleştirmek mümkün. 962 00:53:19,860 --> 00:53:21,130 Ve aslında yoktur. 963 00:53:21,130 --> 00:53:25,320 Ne oluşturabilir eğer Bizi sağlayan bir işlev 964 00:53:25,320 --> 00:53:28,350 Bir avcı, bir fonksiyonu olarak kabul etmek? 965 00:53:28,350 --> 00:53:30,350 Bu durumda Yani, almak Bu argümanların bak. 966 00:53:30,350 --> 00:53:33,220 Biz çiftler listesini kabul gidiyoruz. 967 00:53:33,220 --> 00:53:35,030 Ve sonra biz gidiyoruz Bir işlevi kabul etmek 968 00:53:35,030 --> 00:53:40,990 Bu f adında bir değişken gidiyor Bir Çift alıp bir Çift dönün. 969 00:53:40,990 --> 00:53:43,320 Ve bütün çıkış tüm bu fonksiyon 970 00:53:43,320 --> 00:53:47,310 denilen Eşleyicisi gidiyor çift ​​adında bir dizi döndürür. 971 00:53:47,310 --> 00:53:52,380 >> Bu daha sonra bana izin verecek neler yapmak liste üzerinde yineleme için 972 00:53:52,380 --> 00:53:56,350 ve şimdi aynı şeyi, ama Her o işlevi uygulamak 973 00:53:56,350 --> 00:53:58,970 Bu listedeki tek tek değerlerin. 974 00:53:58,970 --> 00:54:00,750 Yani gerçekten ne f bilmiyorum. 975 00:54:00,750 --> 00:54:02,010 Benim için fark etmez. 976 00:54:02,010 --> 00:54:06,530 Ama çift alır müddetçe, bunun üzerine bazı işlemi gerçekleştiren 977 00:54:06,530 --> 00:54:08,640 ve daha sonra, bir döner Çift, ben o zaman olurdu 978 00:54:08,640 --> 00:54:13,415 karşısında bu işlevi harita mümkün Listedeki her öğe. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> Ve programlama bu tür denilen yüksek dereceli fonksiyonlar, 981 00:54:20,930 --> 00:54:24,440 nerede fonksiyonları geçiyoruz etrafında parametre olarak 982 00:54:24,440 --> 00:54:26,430 ve fonksiyonları ile şeyler yapıyor. 983 00:54:26,430 --> 00:54:29,640 Bu bu tüm almak gibi çeşit Biz CS50 öğrendim fikirler 984 00:54:29,640 --> 00:54:31,390 ve sıralama onları alarak bir sonraki seviyeye. 985 00:54:31,390 --> 00:54:34,140 Ve bu tüm CS51 tarzı şeyler. 986 00:54:34,140 --> 00:54:37,080 Ve böylece biz derinlemesine gidersiniz Böyle sınıflarda daha. 987 00:54:37,080 --> 00:54:38,930 >> Fakat bu aynı zamanda Burada önemli çünkü biz 988 00:54:38,930 --> 00:54:42,010 fonksiyonları bir sürü görmek Swift kullanılmasını 989 00:54:42,010 --> 00:54:45,590 Bu esas olarak yapar Bu, nerede var 990 00:54:45,590 --> 00:54:48,300 Bazı sayılar, sayılar bazı dizisi. 991 00:54:48,300 --> 00:54:50,850 Biz geçmek gidiyoruz Bizim eşleştiricisinden içine dizisi. 992 00:54:50,850 --> 00:54:55,770 Ve biz de gidiyoruz Bazı işlevi, pas hangi 993 00:54:55,770 --> 00:54:57,950 biz zaten burada tanımlanmış ettik. 994 00:54:57,950 --> 00:54:59,690 Bu kare olacak. 995 00:54:59,690 --> 00:55:02,220 Ve biz o gidiyoruz Bu sayıların her kare 996 00:55:02,220 --> 00:55:04,710 ve burada bu sonucu içine depolar. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Yani bu durumda biz tanımladığınız bizim Kendi fonksiyon haritası denir. 999 00:55:11,000 --> 00:55:15,370 Ama tam bu şey, Aslında, Swift yerleşik. 1000 00:55:15,370 --> 00:55:18,960 Çeşitli ve vardır fonksiyonlar harita denir. 1001 00:55:18,960 --> 00:55:21,520 Bir harita işlevi var, Bir fonksiyonu azaltmak var, 1002 00:55:21,520 --> 00:55:25,630 ve bir filtre işlevi var, esasen fonksiyonları uygulandığı 1003 00:55:25,630 --> 00:55:30,782 Bir tek her elemanı Bir şekilde onları değiştirmek için liste. 1004 00:55:30,782 --> 00:55:34,510 >> HEDEF KİTLE: Eğer dönüştüren beri Yani Başka bir biçime verileri 1005 00:55:34,510 --> 00:55:36,134 Bir function-- yoluyla 1006 00:55:36,134 --> 00:55:37,050 DAN Armendariz: Doğru. 1007 00:55:37,050 --> 00:55:39,420 Evet, bu yüzden fonksiyonu biz kabul ediyoruz o 1008 00:55:39,420 --> 00:55:41,790 bir şekilde veri dönüştürüyor. 1009 00:55:41,790 --> 00:55:44,700 Bu durumda, ya da vardı Bunu karesi, ya da biz bunu cubing edildi 1010 00:55:44,700 --> 00:55:50,060 ya da gerçekten, biz gerçekleştirebilir tüm üzerinde hiçbir işlem. 1011 00:55:50,060 --> 00:55:54,150 >> Ama ben o zaman bu nasıl sana göstereyim Uygulamada bakmaya gidiyor. 1012 00:55:54,150 --> 00:55:56,681 Ve yine, ben koşuyorum zaman biraz. bu yüzden değilim 1013 00:55:56,681 --> 00:55:59,430 üzerinden tüm gitmek mümkün olacak burada ayrıntılı olarak kaynak kodu. 1014 00:55:59,430 --> 00:56:00,721 Ama bunu yapmak için teşvik ediyoruz. 1015 00:56:00,721 --> 00:56:03,850 Biz en kısa sürede bunu göndeririz bu mümkün konuşmadan sonra. 1016 00:56:03,850 --> 00:56:07,610 >> Ama bu bir göz atın eğer, Biz numaralarının listesini olduğunu varsayalım, 1017 00:56:07,610 --> 00:56:10,260 Bu sayı dizisi Değişken olarak adlandırılan numaralar. 1018 00:56:10,260 --> 00:56:16,670 Sonra bu gerçekleştirmek istediğiniz Bu numaraları filtre işlemi. 1019 00:56:16,670 --> 00:56:19,730 Yani filtre yüksektir Sipariş fonksiyonu olduğunu 1020 00:56:19,730 --> 00:56:24,660 Ayrıca bir dizi ve bir işlev kabul eder. 1021 00:56:24,660 --> 00:56:28,760 Ve bu her öğe üzerinde Dizi, o işlevi gerçekleştirir. 1022 00:56:28,760 --> 00:56:31,990 >> Bu fonksiyon dönerse Gerçek, bu öğeyi tutar. 1023 00:56:31,990 --> 00:56:36,100 Bu işlev false döndürürse, o öğeyi atar. 1024 00:56:36,100 --> 00:56:40,480 Ve sonra bir listesini döndürür o zaman tüm oluşur 1025 00:56:40,480 --> 00:56:44,360 filtrelenen bu öğelerin. 1026 00:56:44,360 --> 00:56:47,150 >> Yani başka bir deyişle, bu Aynı düşünce, gradebook. 1027 00:56:47,150 --> 00:56:50,800 Biz notlarının çeşitli olabilir Bu değer denilen numaralar içine. 1028 00:56:50,800 --> 00:56:55,590 100 ve 70, ve olabilir 40, vb ve benzeri. 1029 00:56:55,590 --> 00:56:59,110 Ne bu filtre yaptığı uyarıdır Bu, sözdizimi kuralları şeker olduğu 1030 00:56:59,110 --> 00:57:01,310 isimsiz fonksiyonu için. 1031 00:57:01,310 --> 00:57:05,980 Bu söyleyerek anonim bir fonksiyondur ben kabul ediyorum parametre 1032 00:57:05,980 --> 00:57:09,690 Bunun ise, olacak 70 daha büyüktür 1033 00:57:09,690 --> 00:57:15,837 o zaman bu, yani gerçek dönecektir Bu öğeyi Bu filtre tutulacaktır. 1034 00:57:15,837 --> 00:57:17,920 Yani biraz olsun Bu konuda daha somut. 1035 00:57:17,920 --> 00:57:25,760 Ben sayıların bu dizi varsa ve 100, 70 ve 40 oluşur 1036 00:57:25,760 --> 00:57:29,730 Bu filtreyi gerçekleştirmek Bunlardan her biri üzerinde çalışma. 1037 00:57:29,730 --> 00:57:33,270 Böylece ilk 100 bu değerdir. 1038 00:57:33,270 --> 00:57:36,770 100 eşit ya da daha büyük bir 70 doğru olan 1039 00:57:36,770 --> 00:57:41,950 100 tutulur demektir Bu dizinin bu yeni kopyası. 1040 00:57:41,950 --> 00:57:44,290 70, aynı zamanda geçer. 1041 00:57:44,290 --> 00:57:46,020 Ama 40 değil. 1042 00:57:46,020 --> 00:57:54,290 Peki passingCount ne döndürülür elemanların 100 ve dizi 70-- 1043 00:57:54,290 --> 00:57:57,410 100, virgül, 70. 1044 00:57:57,410 --> 00:57:59,870 Bunlar sadece iki vardı tutuldu öğeler. 1045 00:57:59,870 --> 00:58:03,740 Ve böylece nedeni çabuk geçti yüksek düzenin bu tür bir sürü 1046 00:58:03,740 --> 00:58:08,680 Bu ortak çünkü şeylerdir Eğer Swift oldukça göreceksiniz şey 1047 00:58:08,680 --> 00:58:16,810 Sık sık, bazı işlemler gerçekleştirirken Bu anonim işlev sözdizimi kullanarak. 1048 00:58:16,810 --> 00:58:18,450 >> Bazı güzel şeyler var. 1049 00:58:18,450 --> 00:58:24,730 Anahtarlar, Swift gerçekten güçlü Ben sadece deli, deli güçlü gibi yani. 1050 00:58:24,730 --> 00:58:28,250 Sen anahtarını kullanabilirsiniz ve aslında bunları uygulayabilirsiniz 1051 00:58:28,250 --> 00:58:33,160 tür deli aralıkları için, ve böyle süslü şeyler. 1052 00:58:33,160 --> 00:58:37,540 >> Ama son birkaç dakika içinde, Ben oldukça uzak ileride atlamak istiyorsanız 1053 00:58:37,540 --> 00:58:46,940 ve size nasıl belirli bir örneğini göstermektedir Biz Swift kullanarak iOS app oluşturabilirsiniz. 1054 00:58:46,940 --> 00:58:49,040 Peki ne zaman yaptığınızı Bu, sizi gerekecek 1055 00:58:49,040 --> 00:58:51,990 Bir Apple'ın üzerinde at-- bakmak dokümantasyon, onlar 1056 00:58:51,990 --> 00:58:56,084 Gerçekten iyi öğreticiler bir şey var İlk uygulamayı oluşturmak için. 1057 00:58:56,084 --> 00:58:58,250 Ve ben yapmaya teşvik onlar sizi çünkü 1058 00:58:58,250 --> 00:59:04,110 Neyin tüm adımları tam aracılığıyla Bir iOS uygulama oluşturmak için tıklayın. 1059 00:59:04,110 --> 00:59:07,290 >> Ama burada biz bu iOS uygulaması var. 1060 00:59:07,290 --> 00:59:10,960 Ve bu oldukça basit bir uygulama gerçekten. 1061 00:59:10,960 --> 00:59:13,840 Ben bu çalıştırırsanız, bana göstereyim Eğer neye benzediğini. 1062 00:59:13,840 --> 00:59:19,480 Aslında yaptığı tüm is it internet JSON dosyasından çeker 1063 00:59:19,480 --> 00:59:22,300 ben bir sunucuda depolanan var. 1064 00:59:22,300 --> 00:59:26,310 Ve bu JSON dosyası izin görüntüleri tanımlayan 1065 00:59:26,310 --> 00:59:31,680 Bana üzerinde aracılığıyla sonra döngüsü için benim app, benim web sunucusundan görüntüler. 1066 00:59:31,680 --> 00:59:32,880 >> Yani burada getNextImage var. 1067 00:59:32,880 --> 00:59:37,100 Bu, internetten bir görüntü yükler ve ardından ekrandaki görüntüler. 1068 00:59:37,100 --> 00:59:38,200 >> Yani çok basit. 1069 00:59:38,200 --> 00:59:41,550 Ama burada amaç göstermek için biz şeyleri birleştirmek nasıl 1070 00:59:41,550 --> 00:59:47,820 CS50 ikinci birkaç hafta gerçek bir IOS uygulamasına. 1071 00:59:47,820 --> 00:59:53,140 Başka bir deyişle, belki birisi de Eğer yapmak isteyeceksiniz şeyler 1072 00:59:53,140 --> 00:59:56,340 Bir IOS uygulamaya sahip olduğunu internetten veri indirebiliriz 1073 00:59:56,340 --> 00:59:59,070 ve kullanıcıya bazı bilgileri gösterir. 1074 00:59:59,070 --> 01:00:03,130 Yani tamamen noktasıdır Burada bu kaynak kodunun. 1075 01:00:03,130 --> 01:00:07,890 >> Yani hakkında söylenecek çok şey var nasıl gerçek iOS geliştirme yapmak için. 1076 01:00:07,890 --> 01:00:12,860 Çılgın sözdizimi bir çok şey var biz oldukça henüz görmedim 1077 01:00:12,860 --> 01:00:15,580 Bir sınıf gibi, bir sınıf aslında budur. 1078 01:00:15,580 --> 01:00:19,470 Biz büyük ölçüde göz ardı edebilirsiniz şimdilik bu. 1079 01:00:19,470 --> 01:00:23,250 >> Ama biz içerdiği olduğunu fark Bu bir çok şey içinde 1080 01:00:23,250 --> 01:00:27,720 biz zaten böyle gördüm Belirli adlara sahip işlevler. 1081 01:00:27,720 --> 01:00:32,650 Ve biz o verdiğinizde Doğru isimleri fonksiyonları 1082 01:00:32,650 --> 01:00:36,530 aslında, IOS ile beklenen Bu biraz büyülü hissediyor. 1083 01:00:36,530 --> 01:00:40,300 Ama bir oluşturduğunuzda IOS uygulaması vardır 1084 01:00:40,300 --> 01:00:47,590 Belirli fonksiyon isimleri olduğunu telefonun kendisi tarafından çağrılan 1085 01:00:47,590 --> 01:00:52,440 Uygulama denemek için yüklenirken olarak aslında süreç oluşturmak için 1086 01:00:52,440 --> 01:00:54,787 Başvurunuzu çalışır. 1087 01:00:54,787 --> 01:00:58,120 Yani yine bir çok şey var ki ben Bizim için sırayla buraya geçiştirmeye zorunda 1088 01:00:58,120 --> 01:01:00,570 Bu konuda özellikle konuşmak için. 1089 01:01:00,570 --> 01:01:06,050 Ama belki bakmak için teşvik Diğer iOS seminer, aynı zamanda bazı 1090 01:01:06,050 --> 01:01:09,290 yapmak öğreticiler çevrimiçi bir tanımlamanın çok daha iyi bir iş 1091 01:01:09,290 --> 01:01:11,030 ayrıntılı bilgi. 1092 01:01:11,030 --> 01:01:15,760 >> Ama biz birkaç şey görebilirsiniz Burada kodundan ilginçtir. 1093 01:01:15,760 --> 01:01:17,950 Biz ifadeleri eğer var dikkat edin. 1094 01:01:17,950 --> 01:01:20,400 Bu arada, çok önemli bir ifadeleri hakkında eğer bir şey 1095 01:01:20,400 --> 01:01:24,860 olduğunu etrafında parantez Boole ifadesi isteğe bağlıdır. 1096 01:01:24,860 --> 01:01:30,800 Ama kaşlı, isteğe bağlı değildir ne kadar az ya da kod kaç satır 1097 01:01:30,800 --> 01:01:32,360 Eğer bir if deyimi var. 1098 01:01:32,360 --> 01:01:38,670 Sen ifadeleri ise bir olamaz Swift kıvırcık parantez olmadan. 1099 01:01:38,670 --> 01:01:41,000 >> Ve bu, iyi, çeşit aptalca. 1100 01:01:41,000 --> 01:01:43,910 Ama bu tarihsel nedenleri var. 1101 01:01:43,910 --> 01:01:46,180 Kendiniz kurtaracak gerekiyordu. 1102 01:01:46,180 --> 01:01:49,899 Örneğin bu gibi yapamazsın etrafında küme ayraçları ortadan 1103 01:01:49,899 --> 01:01:50,440 if. 1104 01:01:50,440 --> 01:01:52,730 Bu, aslında gerekmektedir. 1105 01:01:52,730 --> 01:01:54,480 Yani etmenizi öneririz şuna bir bak. 1106 01:01:54,480 --> 01:01:56,230 Ama bir tane daha var Ben istiyorum inşa 1107 01:01:56,230 --> 01:02:02,640 Swift hakkında size göstermek için bu karşılaştırıldığında Swift 2.0 için yeni bir 1108 01:02:02,640 --> 01:02:08,460 Swift eski sürümleri için, Hangi şudur. 1109 01:02:08,460 --> 01:02:11,620 Ben buraya koydum nereye Bakalım? 1110 01:02:11,620 --> 01:02:16,630 >> Yani bu fonksiyon denir fetchJSON, bu işlev 1111 01:02:16,630 --> 01:02:23,450 bu JSON çekme sorumludur sadece bu yüzden olur bir URL dosyasını 1112 01:02:23,450 --> 01:02:26,310 Benim CS50 IDE çalışıyor olması. 1113 01:02:26,310 --> 01:02:28,580 Ben sadece, Apache başladı Orada benim JSON dosyasını koymak, 1114 01:02:28,580 --> 01:02:32,110 ve ben o çekin mümkün değilim kullanarak internetten veri 1115 01:02:32,110 --> 01:02:36,430 Bu işlev ve bu URL, Hangi telefon tarafından sağlanmaktadır. 1116 01:02:36,430 --> 01:02:40,490 Bu tarafından sağlanan var kütüphane kullanmak olduğunu 1117 01:02:40,490 --> 01:02:43,140 Bazı iOS uygulaması geliştirme yapıyoruz. 1118 01:02:43,140 --> 01:02:49,690 >> Bu sıradışı olduğunu burada edin sözdizimsel yapı görevlisi çağırdı. 1119 01:02:49,690 --> 01:02:53,530 Ve gerçekten bu olduğunu Swift doğrulama yoludur 1120 01:02:53,530 --> 01:02:56,870 bazı şeyler var sizden önce karşılandı 1121 01:02:56,870 --> 01:03:00,000 fonksiyonun geri kalanı ile devam edin. 1122 01:03:00,000 --> 01:03:04,260 Yani kullanarak olabilir Bu isteğe bağlı tip, 1123 01:03:04,260 --> 01:03:10,530 Ben URL'yi tarafından bulduk Bu NSURL fonksiyonu çalışıyor 1124 01:03:10,530 --> 01:03:16,640 ve bir URL içine saklamak Sabit ve daha sonra kontrol 1125 01:03:16,640 --> 01:03:20,820 URL nil olmadığını görmek için ona çünkü İsteğe bağlı türünü geri gidiyordu. 1126 01:03:20,820 --> 01:03:25,660 Nil Ve eğer, o zaman yapardım Bir hata çıktı ve sonra geri dönün. 1127 01:03:25,660 --> 01:03:29,970 >> Ama bunun yerine ne bekçi sağlar Bize, çok şey yapmak 1128 01:03:29,970 --> 01:03:34,550 ancak olduğundan emin olun Aslında durum bu url 1129 01:03:34,550 --> 01:03:38,020 Düzgün NSURL tarafından kurulmuştur. 1130 01:03:38,020 --> 01:03:41,810 Ve daha sonra, eğer Bu atlar ve 1131 01:03:41,810 --> 01:03:46,110 Eğer devam etmek sağlayacak url düzgün tanımlanmış olan. 1132 01:03:46,110 --> 01:03:48,830 Ancak bu durumda ise, bu url düzgün tanımlı değil, 1133 01:03:48,830 --> 01:03:52,550 Bu işlev bir hata döndürür eğer ya da başka bir şey beklenmeyen 1134 01:03:52,550 --> 01:03:58,030 Aslında, bu koruma yapıyı meydana daha sonra çıkış bu hata bize izin verir 1135 01:03:58,030 --> 01:04:00,390 ve hemen dönün. 1136 01:04:00,390 --> 01:04:00,890 Evet? 1137 01:04:00,890 --> 01:04:04,839 >> HEDEF KİTLE: Yani tür bir o else if gibi? 1138 01:04:04,839 --> 01:04:07,130 DAN Armendariz: Bu tür bulunuyor Bir evet, o zaman else if gibi 1139 01:04:07,130 --> 01:04:14,200 Bu url sonra olması dışında Bu aşağıda her şey için tanımlanmış. 1140 01:04:14,200 --> 01:04:20,420 O zaman o, bu bekçi geçerse aslında verilerle dolu olacak 1141 01:04:20,420 --> 01:04:29,500 ve geri kalan kullanılabilen senin işlevi kaynak kodu. 1142 01:04:29,500 --> 01:04:33,790 O yüzden gidiyoruz şüpheli hem de bu nöbetçi görmeye başlarsınız. 1143 01:04:33,790 --> 01:04:36,670 Ve bu dikkatli olun. 1144 01:04:36,670 --> 01:04:46,270 >> Yani sadece diğer bir çift bakarak şeyler, burada bu hakkın ne olduğunu, 1145 01:04:46,270 --> 01:04:53,377 sizce, sadece ne dayalı Daha önce hakkında konuşuyorduk? 1146 01:04:53,377 --> 01:04:56,650 >> HEDEF KİTLE: listede edeceğiz düşünüyorsunuz? 1147 01:04:56,650 --> 01:04:59,100 >> DAN Armendariz: Yani yakın. 1148 01:04:59,100 --> 01:05:02,360 Bu, tanımlıyoruz bir fonksiyonudur. 1149 01:05:02,360 --> 01:05:07,240 Ve biz bu işlevi giren vardır Burada bu işleve argüman olarak. 1150 01:05:07,240 --> 01:05:09,120 >> HEDEF KİTLE: nil [duyulamaz] değilse. 1151 01:05:09,120 --> 01:05:11,470 Yani doğru, listede var? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: Hata nil değilse, böylece ben ilerlemek zorunda bu--. 1153 01:05:15,450 --> 01:05:18,060 Peki, gerçekten, en göremiyorum let Burada sağa ilerleyin. 1154 01:05:18,060 --> 01:05:23,161 Hata ediliyor bir argümandır Bu anonim işleve geçirilen. 1155 01:05:23,161 --> 01:05:24,410 Bu bir anonim bir işlevdir. 1156 01:05:24,410 --> 01:05:25,480 Bu adı yok. 1157 01:05:25,480 --> 01:05:29,850 Ama biz bu üç kabul edilir argümanlar, veri tepki ve hata. 1158 01:05:29,850 --> 01:05:33,590 Ve o kadar geçersiz dönmek için gidiyor bir şey geri gitmiyor. 1159 01:05:33,590 --> 01:05:37,910 Ve bu içeriği olan Bu işlevin. 1160 01:05:37,910 --> 01:05:41,961 Ve sonra biz bu içinde erişim Bu argümanların her işlevi. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Yani bir kasırga var Dilin turu. 1163 01:05:48,679 --> 01:05:50,470 Ama bu birlikte umut, umarım almak gibi 1164 01:05:50,470 --> 01:05:54,490 Öğreticiler bazıları bir göz Swift ile iOS gelişimine özgü, 1165 01:05:54,490 --> 01:05:57,481 Eğer gitmek özellikle Apple'ın geliştirici web page-- 1166 01:05:57,481 --> 01:05:59,980 onlar gerçekten iyi bir şey var öğreticiler Başlamak için. 1167 01:05:59,980 --> 01:06:05,010 Ama konuşurken umarım sadece bu saatte sözdizimi hakkında kendisi verdi 1168 01:06:05,010 --> 01:06:08,760 Eğer yeteri kadar bununla başlamak için. 1169 01:06:08,760 --> 01:06:12,950 >> Biz bu kaynağın tüm yayınlayacağız Seminer sitesinde kodu 1170 01:06:12,950 --> 01:06:17,800 en kısa sürede, hem de slayt olarak böylece herkes için bir başvuru var. 1171 01:06:17,800 --> 01:06:20,530 Senin projeleri ile Ama iyi şanslar. 1172 01:06:20,530 --> 01:06:23,640 Ve geldiğiniz için hepinize çok teşekkür ederim. 1173 01:06:23,640 --> 01:06:26,990 >> [ALKIŞ] 1174 01:06:26,990 --> 01:06:28,026