1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL Armendariz: Halo, semua orang, Selamat datang di pengembangan aplikasi iOS 3 00:00:14,340 --> 00:00:15,020 dengan cepat. 4 00:00:15,020 --> 00:00:15,870 Aku Dan Armendariz. 5 00:00:15,870 --> 00:00:18,920 Aku precepter komputer ilmu di sini di Sekolah 6 00:00:18,920 --> 00:00:21,200 Teknik dan Ilmu Terapan. 7 00:00:21,200 --> 00:00:24,310 Dan cepat sebenarnya jenis bahasa benar-benar rapi. 8 00:00:24,310 --> 00:00:27,190 Dan saya memiliki beberapa rencana untuk hari ini. 9 00:00:27,190 --> 00:00:31,430 Jadi lebih satu jam berikutnya atau jadi kita akan untuk melihat pengembangan aplikasi iOS sendiri 10 00:00:31,430 --> 00:00:36,640 menggunakan Xcode dan benar-benar menciptakan beberapa sangat dasar, aplikasi yang sangat sederhana. 11 00:00:36,640 --> 00:00:40,070 Dan melihat cara yang Anda benar-benar mengambil aplikasi tersebut, 12 00:00:40,070 --> 00:00:42,887 dan membangun mereka, dan benar-benar menempatkan mereka pada perangkat iOS. 13 00:00:42,887 --> 00:00:44,970 Beberapa hal yang kita tidak akan melihat 14 00:00:44,970 --> 00:00:47,540 akan mencakup hal-hal seperti benar-benar mengambil aplikasi 15 00:00:47,540 --> 00:00:48,940 dan menaruhnya di app store. 16 00:00:48,940 --> 00:00:52,930 Ada banyak tutorial online yang akan membantu Anda dengan itu aspek itu. 17 00:00:52,930 --> 00:00:56,230 Tapi juga karena sebagai bagian dari CS50, Anda mendapatkan 18 00:00:56,230 --> 00:00:59,780 untuk bergabung dengan pengembangan Apple Tim, tim pengembangan aplikasi CS50 itu. 19 00:00:59,780 --> 00:01:02,790 Jika Anda belum melakukannya belum dan Anda berafiliasi dengan CS50, 20 00:01:02,790 --> 00:01:04,810 Saya sarankan Anda melakukan itu karena itu 21 00:01:04,810 --> 00:01:08,820 adalah bagaimana Anda dapat membuat beberapa program di Xcode, 22 00:01:08,820 --> 00:01:11,890 membangun mereka, dan benar-benar menempatkan mereka pada beberapa perangkat iOS Anda 23 00:01:11,890 --> 00:01:14,087 jika Anda benar-benar memiliki perangkat iOS fisik. 24 00:01:14,087 --> 00:01:16,670 Jika Anda tidak memiliki iOS fisik perangkat yang lebih dari baik-baik saja. 25 00:01:16,670 --> 00:01:19,810 Anda benar-benar dapat mengembangkan untuk iOS. 26 00:01:19,810 --> 00:01:22,390 Dan Xcode memiliki simulator yang memungkinkan Anda 27 00:01:22,390 --> 00:01:26,570 untuk melihat aplikasi Anda dalam tindakan pada komputer Anda. 28 00:01:26,570 --> 00:01:30,440 Tapi itu semacam adalah hal yang rapi untuk benar-benar bermain dan berinteraksi 29 00:01:30,440 --> 00:01:34,235 dengan aplikasi Anda pada perangkat yang sebenarnya. 30 00:01:34,235 --> 00:01:37,360 Jadi ada beberapa persyaratan untuk benar-benar melakukan semua perkembangan ini. 31 00:01:37,360 --> 00:01:39,151 Salah satunya adalah bahwa Anda harus memiliki Mac. 32 00:01:39,151 --> 00:01:44,770 Itu harus berjalan 10.9.4 atau yang lebih baru untuk melakukan pembangunan dengan cepat. 33 00:01:44,770 --> 00:01:47,770 >> Anda dapat menggunakan sebelumnya Versi untuk mengembangkan 34 00:01:47,770 --> 00:01:50,810 dengan Objective C untuk iOS dan Mac. 35 00:01:50,810 --> 00:01:53,990 Tapi saya sarankan, dan banyak contoh yang akan kita lihat hari ini, 36 00:01:53,990 --> 00:01:55,700 menggunakan 10.10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Jadi, jika Anda belum upgrade, itu adalah alasan yang baik untuk melakukannya. 38 00:02:00,910 --> 00:02:05,480 Sekarang Xcode 6.1 adalah versi terbaru dari lingkungan pengembangan terintegrasi 39 00:02:05,480 --> 00:02:08,979 bahwa Apple menyediakan secara gratis yang Anda dapat men-download dari app store. 40 00:02:08,979 --> 00:02:11,220 Dan saya sarankan Anda juga menjalankan versi terbaru. 41 00:02:11,220 --> 00:02:14,700 >> Jika Anda kebetulan menjalankan sebelumnya versi, Xcode 5 dan di bawah hanya 42 00:02:14,700 --> 00:02:16,741 hanya tidak mendukung cepat sekali. 43 00:02:16,741 --> 00:02:19,490 Dan versi beta dari enam, yang yang dirilis selama musim panas, 44 00:02:19,490 --> 00:02:21,770 melakukan dukungan cepat, tapi ada menjadi sejumlah besar 45 00:02:21,770 --> 00:02:25,220 perubahan bahasa, cukup sehingga kode yang Anda 46 00:02:25,220 --> 00:02:28,320 akan melihat dan bahwa Anda mungkin menemukan di internet 47 00:02:28,320 --> 00:02:33,294 tidak akan benar-benar mengkompilasi benar dalam versi sebelumnya dari Xcode. 48 00:02:33,294 --> 00:02:35,460 Jadi sekali lagi, jika Anda belum memiliki account pengembang, 49 00:02:35,460 --> 00:02:38,560 Saya sarankan Anda pergi ke developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Mendaftar, membuat account pengembang, dan bergabung dengan tim pengembangan aplikasi CS50. 51 00:02:42,240 --> 00:02:45,530 Yang akan memberikan kepada Anda kesempatan untuk mengkompilasi aplikasi Anda 52 00:02:45,530 --> 00:02:47,840 dan menempatkan mereka pada perangkat Anda. 53 00:02:47,840 --> 00:02:49,222 OK, jadi mari kita mulai. 54 00:02:49,222 --> 00:02:50,930 Hal pertama kita akan lakukan adalah 55 00:02:50,930 --> 00:02:55,140 untuk benar-benar membuat sangat proyek sederhana di Xcode 56 00:02:55,140 --> 00:02:59,530 yang akan memungkinkan Anda untuk membuat aplikasi. 57 00:02:59,530 --> 00:03:03,170 >> Jadi, jika Anda belum memiliki Xcode terbuka, maju dan membukanya 58 00:03:03,170 --> 00:03:04,270 dan membuat proyek baru. 59 00:03:04,270 --> 00:03:06,570 Sebuah splash screen khusus akan membuka dan akan memberi Anda 60 00:03:06,570 --> 00:03:08,800 beberapa pilihan tentang apa itu yang ingin Anda lakukan. 61 00:03:08,800 --> 00:03:12,170 Katakan saja bahwa Anda ingin membuat sebuah proyek baru, aplikasi baru. 62 00:03:12,170 --> 00:03:15,650 Jendela ini akan muncul, asumsi Anda menggunakan Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Sekarang, dan untuk durasi seminar ini, 64 00:03:17,650 --> 00:03:19,990 kita akan menggunakan tunggal aplikasi tampilan, hanya 65 00:03:19,990 --> 00:03:22,590 semacam aplikasi dasar untuk mendapatkan kaki Anda basah. 66 00:03:22,590 --> 00:03:25,200 Dan Anda dapat cabang keluar Anda sendiri dari sana. 67 00:03:25,200 --> 00:03:27,660 >> Klik Next pada saat ini. 68 00:03:27,660 --> 00:03:30,796 Sekarang di sini ada beberapa hal Anda mungkin ingin masuk. 69 00:03:30,796 --> 00:03:32,670 Nama produk adalah nama proyek Anda. 70 00:03:32,670 --> 00:03:34,859 Dalam hal ini, aku hanya akan menyebutnya Seminar1 71 00:03:34,859 --> 00:03:36,150 karena itu contoh pertama kami. 72 00:03:36,150 --> 00:03:38,290 Nama organisasi, di hal ini hanya nama saya. 73 00:03:38,290 --> 00:03:41,760 Anda tentu saja dapat mengubahnya untuk nama Anda sendiri, atau untuk CS50. 74 00:03:41,760 --> 00:03:46,160 Identifier organisasi, jika Anda kebetulan memiliki website hanya mengambil 75 00:03:46,160 --> 00:03:49,940 nama domain di mundur, com.yourname. 76 00:03:49,940 --> 00:03:54,200 dan kemudian nama produk akan muncul secara otomatis 77 00:03:54,200 --> 00:03:55,820 setelah itu sebagai identifier bundel. 78 00:03:55,820 --> 00:03:59,200 >> Jelas bahasa yang kita akan menggunakan untuk hari ini adalah cepat. 79 00:03:59,200 --> 00:04:02,590 Anda dapat, tentu saja, menggunakan Objective C untuk itu, tapi hari ini akan cepat. 80 00:04:02,590 --> 00:04:04,920 Dan kita akan untuk sekarang mengatakan perangkat universal, sehingga 81 00:04:04,920 --> 00:04:06,900 bahwa ia bekerja pada kedua iPad dan iPhone. 82 00:04:06,900 --> 00:04:10,040 Dan kita akan meninggalkan inti Data dicentang untuk menjaga 83 00:04:10,040 --> 00:04:12,830 proyek yang relatif sederhana untuk saat ini. 84 00:04:12,830 --> 00:04:14,430 Jadi mari kita pergi ke depan dan klik Next. 85 00:04:14,430 --> 00:04:16,471 Dan itu akan bertanya kepada saya di mana saya ingin menyimpannya. 86 00:04:16,471 --> 00:04:19,250 Aku hanya akan menyimpannya ke desktop saya untuk saat ini. 87 00:04:19,250 --> 00:04:22,267 >> Baiklah, jadi sekarang ini adalah apa yang akan terjadi ketika Anda benar-benar terbuka Xcode. 88 00:04:22,267 --> 00:04:24,100 Dan perhatikan bahwa Hal pertama yang Anda lihat 89 00:04:24,100 --> 00:04:28,770 adalah tanda seru ini yang mengatakan identitas penandatanganan ditemukan. 90 00:04:28,770 --> 00:04:31,520 Saya sengaja melakukan ini di komputer saya dan saya 91 00:04:31,520 --> 00:04:34,220 berharap bahwa aku akan dapat benar-benar memperbaikinya, 92 00:04:34,220 --> 00:04:37,860 karena saya ingin Anda melihat bagaimana ini benar-benar akan bekerja pada komputer Anda sendiri. 93 00:04:37,860 --> 00:04:40,400 >> Silakan klik isu memperbaiki. 94 00:04:40,400 --> 00:04:45,400 Ini akan meminta Anda jika Anda memiliki akun pengembang apel yang ada. 95 00:04:45,400 --> 00:04:48,330 Di sinilah bergabung dengan CS50 tim pengembangan aplikasi 96 00:04:48,330 --> 00:04:51,240 penting agar Anda tidak hanya memiliki account app, 97 00:04:51,240 --> 00:04:53,690 tetapi Anda juga memiliki kemampuan untuk menandatangani aplikasi 98 00:04:53,690 --> 00:04:56,420 dan menempatkan mereka pada perangkat iOS Anda. 99 00:04:56,420 --> 00:04:58,957 Ini adalah mengklik not-- Masalah memperbaiki tidak perlu 100 00:04:58,957 --> 00:05:01,040 jika Anda hanya akan membangun dan mengembangkan secara lokal, 101 00:05:01,040 --> 00:05:03,520 seluruhnya dalam simulator iOS. 102 00:05:03,520 --> 00:05:05,820 >> Tapi untuk sekarang aku akan untuk mengembangkan dan menempatkan mereka 103 00:05:05,820 --> 00:05:08,160 pada iPad saya, yang akan mampu untuk menyiarkan juga. 104 00:05:08,160 --> 00:05:10,770 Jadi saya ingin benar-benar menambahkan ini. 105 00:05:10,770 --> 00:05:13,670 Dan itu akan meminta saya untuk ID apple saya. 106 00:05:13,670 --> 00:05:15,700 Jadi itu akan menjadi ini. 107 00:05:15,700 --> 00:05:18,940 Dan saya harus mengambil saya password, yang di sini. 108 00:05:18,940 --> 00:05:27,760 Jadi beri aku hanya satu detik untuk menemukan bahwa, dan copy itu, dan paste di sini. 109 00:05:27,760 --> 00:05:28,580 >> Klik Add. 110 00:05:28,580 --> 00:05:31,095 Itu akan bertanya kepada saya Tim yang saya ingin bergabung. 111 00:05:31,095 --> 00:05:33,240 Aku akan melakukan sekolah teknik. 112 00:05:33,240 --> 00:05:35,680 Klik Gabung. 113 00:05:35,680 --> 00:05:37,780 Ups, itu yang salah. 114 00:05:37,780 --> 00:05:40,730 Mari kita lakukan satu ini. 115 00:05:40,730 --> 00:05:42,060 Mudah-mudahan satu yang akan bekerja. 116 00:05:42,060 --> 00:05:44,220 Salah satu yang masih tidak bekerja. 117 00:05:44,220 --> 00:05:46,610 Kami sudah kehabisan yang baik di sini. 118 00:05:46,610 --> 00:05:48,260 OK, yang satu ini harus bekerja. 119 00:05:48,260 --> 00:05:50,816 Sekarang tutup itu. 120 00:05:50,816 --> 00:05:54,450 Sekarang mari kita lakukan sekolah rekayasa, klik pilih. 121 00:05:54,450 --> 00:06:00,190 >> Dan sekarang mudah-mudahan setelah beberapa detik Anda can-- OK, 122 00:06:00,190 --> 00:06:02,550 Aku akan mencabut dan permintaan. 123 00:06:02,550 --> 00:06:05,410 Oh man, ini akan tidak bekerja. 124 00:06:05,410 --> 00:06:08,890 OK, saya akan mencoba yang berbeda. 125 00:06:08,890 --> 00:06:11,167 Mari kita lakukan ini di sini. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Demo hidup gagal saya. 128 00:06:19,310 --> 00:06:22,540 Kita mungkin harus kembali ke hanya membangun seluruhnya lokal, 129 00:06:22,540 --> 00:06:25,050 tapi itu akan menjadi OK dalam kasus ini. 130 00:06:25,050 --> 00:06:28,560 >> Jadi di sini, sementara ini sebenarnya kerja, apa yang kita akan lakukan adalah hanya 131 00:06:28,560 --> 00:06:31,190 membuat sangat sederhana Hello aplikasi Dunia. 132 00:06:31,190 --> 00:06:32,340 Jadi ini adalah Xcode. 133 00:06:32,340 --> 00:06:37,300 Dan jika Anda belum melihatnya, itu dapat sedikit menakutkan pada awalnya. 134 00:06:37,300 --> 00:06:41,430 Ada banyak panel, ada Banyak barang-barang kecil di berbagai daerah. 135 00:06:41,430 --> 00:06:44,300 Tapi menyadari bahwa ada benar-benar beberapa komponen utama 136 00:06:44,300 --> 00:06:46,580 untuk lingkungan pengembangan ini. 137 00:06:46,580 --> 00:06:51,090 Pada bagian kiri jauh adalah semua file yang berlaku untuk program anda 138 00:06:51,090 --> 00:06:52,997 atau proyek tertentu. 139 00:06:52,997 --> 00:06:55,080 Kami akan mengklik sekitar pada beberapa dari mereka dan kami akan 140 00:06:55,080 --> 00:06:57,660 menunjukkan yang paling yang penting dari waktu ke waktu. 141 00:06:57,660 --> 00:06:59,650 Di paling kanan, kita memiliki satu set atribut. 142 00:06:59,650 --> 00:07:02,920 Dan semua atribut ini, ada berbagai panel untuk atribut. 143 00:07:02,920 --> 00:07:06,770 Panel akan berubah tergantung pada konteks konten utama, yang 144 00:07:06,770 --> 00:07:08,290 kebetulan berada di tengah. 145 00:07:08,290 --> 00:07:11,740 Sekarang tengah benar-benar dapat menunjukkan Anda berbagai hal, misalnya 146 00:07:11,740 --> 00:07:13,290 kode Anda sendiri. 147 00:07:13,290 --> 00:07:17,070 Atau Anda mungkin benar-benar have-- saat Anda klik pada storyboard yang 148 00:07:17,070 --> 00:07:21,270 adalah, dengan cara, hanya grafis yang representasi pengguna Anda 149 00:07:21,270 --> 00:07:25,350 antarmuka untuk application-- Anda maka atribut panel 150 00:07:25,350 --> 00:07:27,334 di bagian paling kanan akan benar-benar berubah. 151 00:07:27,334 --> 00:07:29,750 Sekarang ada beberapa lainnya hal yang saya ingin menunjukkan. 152 00:07:29,750 --> 00:07:33,360 Anda dapat semacam menjelajahi sekitar di lingkungan Anda sendiri. 153 00:07:33,360 --> 00:07:35,730 Tapi satu hal yang telah sangat berguna 154 00:07:35,730 --> 00:07:38,470 adalah tombol ini di sini, kanan atas jendela. 155 00:07:38,470 --> 00:07:41,230 Ada tombol ini yang Sepertinya di paling 156 00:07:41,230 --> 00:07:46,090 meninggalkannya memiliki sebuah paragraf diikuti oleh dua lingkaran dan semacam 157 00:07:46,090 --> 00:07:49,540 dua panah menunjuk dari satu sama lain. 158 00:07:49,540 --> 00:07:52,640 Jika Anda beralih di antara standar Editor, yang 159 00:07:52,640 --> 00:07:55,560 adalah salah satu paling kiri, satu yang dipilih secara default, 160 00:07:55,560 --> 00:08:01,040 dan dua lingkaran yang tumpang tindih satu sama lain, apa yang Anda dapatkan 161 00:08:01,040 --> 00:08:02,210 adalah pandangan panel ganda. 162 00:08:02,210 --> 00:08:04,240 >> Dan ini sebenarnya akan berguna bagi kita 163 00:08:04,240 --> 00:08:07,330 ketika kita perlu untuk menghubungkan item di UI untuk kode. 164 00:08:07,330 --> 00:08:09,330 Dan kita akan berbicara lebih banyak tentang bahwa hanya dalam beberapa saat. 165 00:08:09,330 --> 00:08:12,050 Tapi menyadari bahwa jika Anda mendapatkan bahkan lebih panel seperti ini, 166 00:08:12,050 --> 00:08:15,830 Anda dapat menyederhanakan pandangan Anda hanya yang sedikit dengan mengklik kembali 167 00:08:15,830 --> 00:08:20,680 pada Editor tunggal Anda. 168 00:08:20,680 --> 00:08:21,580 Sejauh ini cukup baik. 169 00:08:21,580 --> 00:08:24,560 Jadi pada dasarnya kita memiliki kode pada kiri, atribut di sebelah kanan, 170 00:08:24,560 --> 00:08:28,260 dan apa pun yang kita kerjakan di sini di pusat. 171 00:08:28,260 --> 00:08:30,390 >> Jadi di sini saya sudah diklik pada storyboard utama. 172 00:08:30,390 --> 00:08:33,350 Dan storyboard, lagi, adalah cara di Xcode 173 00:08:33,350 --> 00:08:38,110 bahwa Anda benar-benar dapat membuat pengguna Anda antarmuka hanya menggunakan drag dan drop 174 00:08:38,110 --> 00:08:39,130 teknik. 175 00:08:39,130 --> 00:08:41,190 Dan untuk waktu yang kami Aplikasi pertama ini 176 00:08:41,190 --> 00:08:42,720 Justru apa yang akan kita lakukan. 177 00:08:42,720 --> 00:08:45,950 Kita akan pergi ke bagian kanan sangat jauh lebih rendah 178 00:08:45,950 --> 00:08:49,900 layar, yang berisi berbagai elemen pengguna 179 00:08:49,900 --> 00:08:53,270 yang kemudian dapat klik dan drag untuk membuat antarmuka pengguna Anda. 180 00:08:53,270 --> 00:08:55,550 >> Sekarang semua ini elemen disebut pandangan 181 00:08:55,550 --> 00:08:57,370 karena mereka menyediakan semacam lihat. 182 00:08:57,370 --> 00:09:00,190 Ada pandangan image, untuk Misalnya, untuk benar-benar menunjukkan 183 00:09:00,190 --> 00:09:01,740 gambar pada user interface. 184 00:09:01,740 --> 00:09:04,310 Ada tampilan tabel untuk benar-benar menunjukkan meja. 185 00:09:04,310 --> 00:09:05,190 Seterusnya dan sebagainya. 186 00:09:05,190 --> 00:09:08,250 Ada berbagai macam pandangan yang dapat Anda pilih di sini. 187 00:09:08,250 --> 00:09:11,100 Jadi hanya untuk saat ini kita akan untuk mencari label. 188 00:09:11,100 --> 00:09:13,550 Anda hanya dapat menelusuri semua daftar yang ada. 189 00:09:13,550 --> 00:09:15,460 Tapi ada pencarian bar di bagian paling bawah 190 00:09:15,460 --> 00:09:19,460 yang membuatnya lebih mudah untuk mengidentifikasi pandangan tertentu yang Anda benar-benar 191 00:09:19,460 --> 00:09:22,020 ingin menyeret ke antarmuka pengguna Anda. 192 00:09:22,020 --> 00:09:23,560 >> Ditemukan label saya. 193 00:09:23,560 --> 00:09:28,430 Aku akan menyeret di sini, langsung ke contoh aplikasi saya. 194 00:09:28,430 --> 00:09:30,130 Tepat di tengah terlihat baik. 195 00:09:30,130 --> 00:09:33,180 Dan aku akan mengetik "Hello World!" 196 00:09:33,180 --> 00:09:33,810 Tekan Enter. 197 00:09:33,810 --> 00:09:34,877 Sekarang aku punya label. 198 00:09:34,877 --> 00:09:36,960 Ini tidak terlihat seperti itu berpusat cukup baik. 199 00:09:36,960 --> 00:09:38,500 Jadi saya dapat mencoba untuk kembali pusat itu. 200 00:09:38,500 --> 00:09:42,100 Untungnya ia menawarkan ini panduan untuk membuat segalanya lebih mudah. 201 00:09:42,100 --> 00:09:44,130 Aku akan mencoba untuk mengkompilasi itu. 202 00:09:44,130 --> 00:09:46,570 Mudah-mudahan itu benar-benar akan bekerja di sini. 203 00:09:46,570 --> 00:09:52,870 Dan jika tidak, hanya dalam beberapa saat justru akan muncul di iPad saya. 204 00:09:52,870 --> 00:09:54,360 Ada di sini. 205 00:09:54,360 --> 00:09:55,060 Itu ada. 206 00:09:55,060 --> 00:09:56,590 >> OK, jadi itu saja. 207 00:09:56,590 --> 00:09:57,160 Kami sudah selesai. 208 00:09:57,160 --> 00:09:58,868 Kami telah membuat sangat kami aplikasi pertama. 209 00:09:58,868 --> 00:10:01,330 Sekarang jelas ini tidak melakukan apa-apa. 210 00:10:01,330 --> 00:10:02,280 Ini hanya label. 211 00:10:02,280 --> 00:10:07,350 Tidak ada hubungan antara user interface dan kode. 212 00:10:07,350 --> 00:10:10,130 Jadi jika kita benar-benar ingin untuk membuat hubungan ini, 213 00:10:10,130 --> 00:10:14,790 jika kita benar-benar ingin memiliki semacam komunikasi antara unsur-unsur 214 00:10:14,790 --> 00:10:17,540 yang ada di layar dan kode yang 215 00:10:17,540 --> 00:10:19,810 memungkinkan kita untuk mengontrol unsur-unsur, maka 216 00:10:19,810 --> 00:10:23,570 kita benar-benar perlu melihat kode itu sendiri. 217 00:10:23,570 --> 00:10:27,000 >> Jadi ini adalah apa yang disebut ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 Dan untuk, terutama untuk beberapa program pertama Anda, 219 00:10:30,080 --> 00:10:33,120 ini akan menjadi semacam dari sebagian besar kode yang Anda enter-- 220 00:10:33,120 --> 00:10:35,980 akan menjadi dalam dokumen ini di sini. 221 00:10:35,980 --> 00:10:38,390 Ada banyak hal yang ada di sini sejauh ini, kan? 222 00:10:38,390 --> 00:10:42,660 Ada impor UI kelas kit, menimpa, [? funk,?] semua ini berbagai hal. 223 00:10:42,660 --> 00:10:45,820 Dan itu tidak cukup jelas apa itu adalah bahwa semua ini berarti. 224 00:10:45,820 --> 00:10:48,570 Jadi mari kita mengambil langkah mundur dari Xcode untuk sedikit 225 00:10:48,570 --> 00:10:52,420 dan melihat bahasa itu sendiri, cepat. 226 00:10:52,420 --> 00:10:56,370 >> Jadi dengan cepat, itu di desain dan pengembangan 227 00:10:56,370 --> 00:10:58,645 di Apple selama sekitar empat tahun pemahaman saya. 228 00:10:58,645 --> 00:11:01,270 Dan ada beberapa fitur tentang hal yang benar-benar rapi. 229 00:11:01,270 --> 00:11:03,910 Pertama-tama, itu dikompilasi bahasa, sama seperti C. 230 00:11:03,910 --> 00:11:06,120 Jadi pertama Anda harus kompilasi dan kemudian menjalankannya 231 00:11:06,120 --> 00:11:09,580 sebelum Anda benar-benar bisa mengeksekusi kode yang dihasilkan. 232 00:11:09,580 --> 00:11:14,250 Tapi ada, tidak seperti C, interaktif meminta bahwa Anda benar-benar dapat menjalankan 233 00:11:14,250 --> 00:11:16,680 dan ketik perintah sewenang-wenang dalam. 234 00:11:16,680 --> 00:11:20,280 Dan sangat mirip konsol JavaScript, yang Anda mungkin akrab dengan sekarang, 235 00:11:20,280 --> 00:11:24,506 itu benar-benar akan mengevaluasi mereka perintah dan memberikan kepada Anda output. 236 00:11:24,506 --> 00:11:26,380 Dan mereka bahkan telah diambil bahwa ke tingkat berikutnya 237 00:11:26,380 --> 00:11:29,100 dan mereka telah menciptakan sesuatu disebut bermain di Xcode 238 00:11:29,100 --> 00:11:31,720 yang memungkinkan Anda untuk visual bekerja dengan kode. 239 00:11:31,720 --> 00:11:34,910 Dan kita benar-benar akan melihat beberapa contoh itu hanya sedikit. 240 00:11:34,910 --> 00:11:41,680 Ini didasarkan pada C. C mendasari itu, karena semua kompiler 241 00:11:41,680 --> 00:11:46,820 membuat kode dari C dan membuat kode objek dari itu. 242 00:11:46,820 --> 00:11:49,240 Tapi itu benar-benar saham relatif sedikit sintaks. 243 00:11:49,240 --> 00:11:50,721 Ini akan terlihat cukup berbeda. 244 00:11:50,721 --> 00:11:51,970 Akan ada beberapa kesamaan. 245 00:11:51,970 --> 00:11:54,140 Tapi ada akan menjadi beberapa perbedaan 246 00:11:54,140 --> 00:11:57,200 dibandingkan dengan, katakanlah, JavaScript atau PHP. 247 00:11:57,200 --> 00:11:59,070 Dan kami akan mengarahkan ini keluar hanya dalam beberapa saat. 248 00:11:59,070 --> 00:12:01,420 >> Sekarang salah satu hal terbesar tentang cepat itu bagus 249 00:12:01,420 --> 00:12:05,650 adalah bahwa, terutama dibandingkan ke C, itu dimaksudkan untuk menjadi aman. 250 00:12:05,650 --> 00:12:08,100 Segala sesuatu di dalamnya dimaksudkan untuk akan sangat sangat diketik dalam. 251 00:12:08,100 --> 00:12:10,780 Bahkan hampir menjengkelkan pada awalnya, ketika Anda pertama kali 252 00:12:10,780 --> 00:12:15,610 mulai bekerja dengan cepat, betapa banyak itu memberlakukan jenis di mana-mana. 253 00:12:15,610 --> 00:12:17,860 Apa pun itu string harus tetap string. 254 00:12:17,860 --> 00:12:22,100 Ini sangat sulit untuk memilah-convert atau memaksa ke bentuk lain. 255 00:12:22,100 --> 00:12:23,800 >> Dan lagi, kami akan menampilkan contoh ini. 256 00:12:23,800 --> 00:12:26,830 Tapi akhirnya menyadari bahwa ini dimaksudkan untuk melindungi Anda, 257 00:12:26,830 --> 00:12:32,010 dan oleh Anda maksud saya kode Anda, dari menerjang dalam beberapa cara yang mengerikan saat 258 00:12:32,010 --> 00:12:34,330 Anda memiliki semacam jenis serasi. 259 00:12:34,330 --> 00:12:36,040 Dan lagi, bekerja dengan itu. 260 00:12:36,040 --> 00:12:40,210 Karena akan membuat frustasi pada awalnya saat Anda mencoba untuk mencari tahu persis mengapa 261 00:12:40,210 --> 00:12:43,070 Anda mendapatkan ini tidak biasa kesalahan berurusan dengan jenis. 262 00:12:43,070 --> 00:12:45,350 Tapi itu akan sia-sia pada akhirnya. 263 00:12:45,350 --> 00:12:47,267 >> Itu menangani otomatis manajemen memori, 264 00:12:47,267 --> 00:12:49,100 sehingga tidak lagi melakukan Anda harus berurusan dengan hal-hal 265 00:12:49,100 --> 00:12:51,400 seperti malloc dan gratis dan semua dari hal-hal. 266 00:12:51,400 --> 00:12:53,066 Dan itu juga dirancang untuk generalisasi. 267 00:12:53,066 --> 00:12:58,360 Jadi sementara kita dapat menggunakan Xcode untuk membuat iOS apps dan aplikasi Mac, 268 00:12:58,360 --> 00:13:00,380 kami juga bisa hanya menggunakannya sebagai bahasa scripting. 269 00:13:00,380 --> 00:13:03,660 Dan jadi kita bisa menggunakannya semacam dari bukan PHP atau sebaliknya 270 00:13:03,660 --> 00:13:07,800 Python untuk benar-benar cepat mengurai dan proses 271 00:13:07,800 --> 00:13:09,800 beberapa data yang kita miliki di komputer kita. 272 00:13:09,800 --> 00:13:13,290 >> Ini memiliki berbagai macam modern fitur, optionals, berubah-ubah, 273 00:13:13,290 --> 00:13:17,900 generik, penutupan, dan banyak ini hal yang Anda mungkin atau mungkin tidak mengenali. 274 00:13:17,900 --> 00:13:22,810 Dan itu hanya semacam malang bagian dari bahasa yang beberapa di antaranya 275 00:13:22,810 --> 00:13:26,700 semacam futuristik, unsur-unsur modern yang yang terkandung dalam unsur-unsur yang 276 00:13:26,700 --> 00:13:34,520 begitu tertanam bahwa saya benar-benar akan harus mengajarkan Anda CS50.5 sedikit. 277 00:13:34,520 --> 00:13:37,305 >> Kita harus belajar sedikit lebih tentang beberapa fitur agar 278 00:13:37,305 --> 00:13:40,180 untuk benar-benar memahami apa yang terjadi dan sehingga Anda dapat melihat kode 279 00:13:40,180 --> 00:13:42,450 dan tidak merasa benar-benar hilang. 280 00:13:42,450 --> 00:13:44,820 Dan Anda akan melihat apa yang saya maksud dengan itu hanya dalam satu menit. 281 00:13:44,820 --> 00:13:47,830 OK, jadi let's-- cukup ini semacam hal teoritis. 282 00:13:47,830 --> 00:13:52,450 Mari kita benar-benar melihat kami Program cepat pertama. 283 00:13:52,450 --> 00:13:53,590 Itu salah satu baris kode. 284 00:13:53,590 --> 00:13:57,690 Baris 14 di sini, itu mengatakan cetak l n halo CS50. 285 00:13:57,690 --> 00:14:01,160 >> Jadi ada beberapa hal yang sangat berbeda tentang hal ini dibandingkan 286 00:14:01,160 --> 00:14:04,140 untuk hal-hal yang Anda mungkin digunakan untuk dari C, misalnya. 287 00:14:04,140 --> 00:14:08,390 Salah satunya adalah bahwa tidak ada intmain, tidak ada termasuk bagian, 288 00:14:08,390 --> 00:14:10,790 ada satu pun dari hal-hal ekstra ini. 289 00:14:10,790 --> 00:14:13,790 Ini termasuk seperti standar I / O, seperti perpustakaan 290 00:14:13,790 --> 00:14:16,580 yang benar-benar memberikan fitur standar bahasa, 291 00:14:16,580 --> 00:14:19,180 secara otomatis dimasukkan sebagai bagian dari perpustakaan standar cepat ini 292 00:14:19,180 --> 00:14:20,680 dan yang secara otomatis diimpor. 293 00:14:20,680 --> 00:14:23,740 Anda tidak perlu melakukan bahwa impor secara manual. 294 00:14:23,740 --> 00:14:27,360 >> Intmain tidak ada karena entry point utama untuk kode 295 00:14:27,360 --> 00:14:29,470 sebenarnya di mulai dari kode. 296 00:14:29,470 --> 00:14:32,000 Jadi kode yang Anda miliki mulai dari awal 297 00:14:32,000 --> 00:14:34,940 akan benar-benar dilaksanakan di awal. 298 00:14:34,940 --> 00:14:36,520 Jadi ini benar-benar sangat menyederhanakan. 299 00:14:36,520 --> 00:14:38,470 Perhatikan juga, bahwa tidak ada titik koma. 300 00:14:38,470 --> 00:14:41,040 Tidak ada titik koma dalam bahasa ini. 301 00:14:41,040 --> 00:14:43,261 Anda menempatkan pernyataan pada garis individu 302 00:14:43,261 --> 00:14:45,510 dan kemudian baris berikutnya merupakan pernyataan lainnya. 303 00:14:45,510 --> 00:14:47,420 Jika Anda ingin menempatkan pernyataan secara online mulitiple, 304 00:14:47,420 --> 00:14:49,086 maka Anda memiliki terpisah dengan titik koma. 305 00:14:49,086 --> 00:14:50,940 Tetapi untuk sebagian besar, untuk gaya yang baik, kami 306 00:14:50,940 --> 00:14:56,530 tidak akan pernah melihat titik koma untuk tujuan laporan memisahkan 307 00:14:56,530 --> 00:14:58,420 dalam cepat. 308 00:14:58,420 --> 00:14:59,820 Jadi bagaimana ini benar-benar bekerja? 309 00:14:59,820 --> 00:15:04,080 Nah sangat banyak seperti C kami benar-benar harus mengkompilasi ini. 310 00:15:04,080 --> 00:15:10,640 Dan kita bisa melakukannya dengan menggunakan c cepat dan kemudian 1.swift. 311 00:15:10,640 --> 00:15:13,850 Dan kemudian setelah beberapa menit ini akan mengkompilasi 312 00:15:13,850 --> 00:15:16,340 dan kemudian saya dapat menjalankan salah satu item. 313 00:15:16,340 --> 00:15:19,691 Dan daripada hanya akan mengatakan "Halo CS50." 314 00:15:19,691 --> 00:15:20,690 Mengagumkan, jadi ada kita pergi. 315 00:15:20,690 --> 00:15:22,273 Ada program hello world pertama kami. 316 00:15:22,273 --> 00:15:24,790 Mari kita lanjutkan ke nomor dua. 317 00:15:24,790 --> 00:15:30,450 >> Sekarang di this-- ini telah berubah sedikit, karena sementara biasanya Anda 318 00:15:30,450 --> 00:15:34,720 do-- sebenarnya selalu yang Anda harus mengkompilasi aplikasi cepat sebelum Anda 319 00:15:34,720 --> 00:15:37,180 benar-benar menjalankan itu-- satu fitur yang besar 320 00:15:37,180 --> 00:15:40,230 yang saya singgung sebelumnya adalah bahwa cepat sebenarnya dapat digunakan dalam jenis 321 00:15:40,230 --> 00:15:43,390 dari modus pseudo-interpretatif, ada sebenarnya seperti seorang penerjemah. 322 00:15:43,390 --> 00:15:46,690 Tapi apa ini akan lakukan adalah ada adalah, pada kenyataannya, aplikasi cepat 323 00:15:46,690 --> 00:15:47,520 bahwa Anda dapat menjalankan. 324 00:15:47,520 --> 00:15:51,050 >> Jadi misalnya jika Anda hanya mengetik cepat di sini, apa yang akan terjadi 325 00:15:51,050 --> 00:15:52,330 adalah bahwa Anda akan mendapatkan prompt. 326 00:15:52,330 --> 00:15:59,040 Dan Anda bisa mengetik cepat Anda kode, cetak halo, dan menjalankannya. 327 00:15:59,040 --> 00:16:01,867 Dan itu benar-benar akan print-- baik, itu tidak mencetak dalam hal ini 328 00:16:01,867 --> 00:16:04,450 karena dicetak berpusat out, yang tidak terlihat di sini. 329 00:16:04,450 --> 00:16:06,660 Tetapi sebenarnya bisa berfungsi. 330 00:16:06,660 --> 00:16:09,580 Dan dalam hal ini, aku hanya akan menggunakan ini sebagai sebuah naskah. 331 00:16:09,580 --> 00:16:11,259 Dan aku benar-benar dapat menjalankan kode ini di sana. 332 00:16:11,259 --> 00:16:13,800 Jadi cara yang saya benar-benar menjalankan itu akan sedikit berbeda, 333 00:16:13,800 --> 00:16:15,710 tetapi Anda akan melihat bahwa hanya dalam beberapa saat. 334 00:16:15,710 --> 00:16:18,890 Sekarang, dalam hal ini apa yang kita akan lakukan adalah untuk pertama mendefinisikan variabel. 335 00:16:18,890 --> 00:16:22,160 Jadi ini adalah bagaimana kita mendefinisikan variabel dalam cepat, 336 00:16:22,160 --> 00:16:25,900 adalah kita menggunakan membiarkan kata kunci, diikuti dengan nama variabel, 337 00:16:25,900 --> 00:16:29,280 dan kemudian kami menyediakan beberapa inisialisasi data yang opsional. 338 00:16:29,280 --> 00:16:34,660 Jadi hal ini kita mendefinisikan konstan disebut nama, 339 00:16:34,660 --> 00:16:37,775 dan kita akan menggunakan bahwa dalam output dari garis cetak kami 340 00:16:37,775 --> 00:16:39,590 di bagian paling bawah, halo nama. 341 00:16:39,590 --> 00:16:43,260 >> Sekarang perhatikan bahwa daripada menggunakan% s, kita bisa merangkum nama ini 342 00:16:43,260 --> 00:16:49,960 variabel dalam / () dan dapat menggabungkan dalam isi ini 343 00:16:49,960 --> 00:16:51,790 string ke dalam string ini. 344 00:16:51,790 --> 00:16:56,510 Sekarang tidak seperti C, tali adalah jenis nyata yang sebenarnya dalam cepat. 345 00:16:56,510 --> 00:16:59,240 Dan itu duduk bersama int dan bersama 346 00:16:59,240 --> 00:17:02,220 ganda sangat mudah dan alami dibandingkan 347 00:17:02,220 --> 00:17:05,450 untuk beberapa lainnya bahasa yang kita lihat. 348 00:17:05,450 --> 00:17:07,980 Jadi ini akan benar-benar berfungsi seperti yang Anda harapkan. 349 00:17:07,980 --> 00:17:10,540 >> Saya bisa menjalankan 2.swift. 350 00:17:10,540 --> 00:17:14,390 Dan kita melihat bahwa nama saya sebenarnya disambung di, "Hello Dan." 351 00:17:14,390 --> 00:17:16,050 OK, mengagumkan. 352 00:17:16,050 --> 00:17:17,485 Pindah ke nomor tiga. 353 00:17:17,485 --> 00:17:19,359 Sekarang itu sedikit dari kebohongan putih yang saya 354 00:17:19,359 --> 00:17:23,369 mengatakan bahwa cara yang kita mendeklarasikan variabel adalah untuk menggunakan membiarkan kata kunci. 355 00:17:23,369 --> 00:17:27,640 Sebagai sebanyak yang Anda mungkin dapat Anda lakukan ingin menggunakan membiarkan, karena apa yang tidak 356 00:17:27,640 --> 00:17:29,280 itu mendefinisikan konstan. 357 00:17:29,280 --> 00:17:33,010 Dan yang memberitahu cepat yang bisa mengoptimalkan kecepatan aplikasi Anda 358 00:17:33,010 --> 00:17:36,230 karena ia tahu bahwa variabel tidak akan berubah. 359 00:17:36,230 --> 00:17:38,760 >> Jadi hati-hati mengevaluasi ketika Anda akan menggunakan 360 00:17:38,760 --> 00:17:41,382 variabel untuk tujuan perubahan itu. 361 00:17:41,382 --> 00:17:43,340 Dan ketika Anda akan membuat variabel hanya 362 00:17:43,340 --> 00:17:47,010 untuk menyimpan beberapa data dan itu adalah tidak benar-benar akan berubah. 363 00:17:47,010 --> 00:17:50,150 Jadi konsep kekekalan, itu tidak benar-benar akan berubah, 364 00:17:50,150 --> 00:17:53,740 merupakan salah satu yang penting bahkan jauh di bawah mendefinisikan variabel. 365 00:17:53,740 --> 00:17:56,870 Jadi di sini kita telah mendefinisikan nama, biarkan nama, dan dalam hal ini 366 00:17:56,870 --> 00:18:02,120 itu konstan, yaitu tipe tali, dan itu sama dengan Dan. 367 00:18:02,120 --> 00:18:05,580 >> Jadi sedangkan di sebelumnya versi, infers-- dan dengan "itu" 368 00:18:05,580 --> 00:18:08,220 Maksudku cepat swift-- menyimpulkan jenis data 369 00:18:08,220 --> 00:18:10,850 bahwa kita telah masuk ke dalam variabel. 370 00:18:10,850 --> 00:18:12,930 Dalam hal ini, kita bisa eksplisit. 371 00:18:12,930 --> 00:18:17,590 Jadi biarkan maka nama ini variabel nama, maka titik dua. 372 00:18:17,590 --> 00:18:21,350 Dan setelah usus besar kita tentukan jenis data. 373 00:18:21,350 --> 00:18:24,694 Jadi tidak lagi apakah nama int atau Nama tali atau sesuatu seperti itu. 374 00:18:24,694 --> 00:18:26,860 Tapi bukannya membiarkan label, kami mendefinisikan apakah atau tidak 375 00:18:26,860 --> 00:18:29,090 itu konstan atau variabel, diikuti dengan nama, 376 00:18:29,090 --> 00:18:31,870 diikuti oleh jenis opsional. 377 00:18:31,870 --> 00:18:34,730 >> Jadi dalam hal ini kita mendefinisikan Nama ini adalah string. 378 00:18:34,730 --> 00:18:35,790 Kami katakan adalah Dan. 379 00:18:35,790 --> 00:18:39,270 Dan sekarang saya memiliki variabel lain, dalam hal ini disebut label. 380 00:18:39,270 --> 00:18:42,090 Tetapi perhatikan bahwa diawali dengan kata kunci var. 381 00:18:42,090 --> 00:18:44,430 Sarana var kata kunci bahwa variabel ini dapat 382 00:18:44,430 --> 00:18:48,720 diubah pada titik kemudian waktu, di suatu tempat di kode 383 00:18:48,720 --> 00:18:52,480 dapat kita benar-benar mengubahnya dan tidak akan memberi kami kesalahan tertentu. 384 00:18:52,480 --> 00:18:56,760 >> Kita bisa melakukan concatenating standar Operator disini menggunakan simbol ditambah 385 00:18:56,760 --> 00:19:00,130 untuk benar-benar menambahkan kami nama ke dalam string ini. 386 00:19:00,130 --> 00:19:02,921 Dan kemudian kita bisa mencetak seperti yang kita lihat hanya beberapa saat yang lalu. 387 00:19:02,921 --> 00:19:04,920 Sekarang mari kita mengatakan bahwa Anda ingin membuat variabel 388 00:19:04,920 --> 00:19:06,586 tetapi Anda tidak ingin menginisialisasi belum. 389 00:19:06,586 --> 00:19:08,590 Anda belum ingin menempatkan data apapun di dalamnya. 390 00:19:08,590 --> 00:19:11,760 Nah Anda harus memberitahu cepat apa jenis data 391 00:19:11,760 --> 00:19:16,430 akan menjadi sebelum Anda dapat sebenarnya mendefinisikannya dengan benar. 392 00:19:16,430 --> 00:19:20,360 >> Jadi dalam hal ini, ketika kita sudah didefinisikan variabel yang disebut kelas kita harus 393 00:19:20,360 --> 00:19:24,450 eksplisit tentang jenis, karena tidak bisa menyimpulkan hanya melihat 394 00:19:24,450 --> 00:19:27,300 di data diinisialisasi yang Anda berikan untuk itu. 395 00:19:27,300 --> 00:19:30,050 Ini akan memberi kita pesan kesalahan jika Anda hanya jenis var kelas, misalnya, 396 00:19:30,050 --> 00:19:31,830 karena tidak memiliki jenis karenanya. 397 00:19:31,830 --> 00:19:33,353 Jadi kelas = 100. 398 00:19:33,353 --> 00:19:35,790 Sehingga 100 adalah bilangan bulat, itu cocok dengan sangat baik ke dalam. 399 00:19:35,790 --> 00:19:36,998 Ini akan terus berfungsi. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Kita bisa melihat bagaimana kemudian kita dapat menggabungkan ini. 402 00:19:43,022 --> 00:19:44,730 Sekarang Anda mungkin tergoda, jika Anda benar-benar 403 00:19:44,730 --> 00:19:48,610 ingin menggabungkan kelas ke dalam string teks lain, 404 00:19:48,610 --> 00:19:52,560 dalam string lain, bahwa Anda akan hanya menggunakan operator yang concatenating sama. 405 00:19:52,560 --> 00:19:54,630 Dan itu biasanya akan menjadi kenyataan. 406 00:19:54,630 --> 00:20:00,540 Tapi cepat tidak akan memungkinkan Anda untuk implisit mengubah tipe data. 407 00:20:00,540 --> 00:20:03,440 Jadi dalam hal ini, ini line, 25, akan gagal 408 00:20:03,440 --> 00:20:06,650 karena kelas adalah bilangan bulat dan bukan string. 409 00:20:06,650 --> 00:20:08,760 Dan jadi ada ketidakcocokan set jenis. 410 00:20:08,760 --> 00:20:11,780 Jadi, Anda harus eksplisit ketika Anda ingin mengubah data ini, 411 00:20:11,780 --> 00:20:14,080 bila Anda ingin memaksa ini data ke dalam jenis yang berbeda 412 00:20:14,080 --> 00:20:17,250 dan berkata, OK, saya ingin mengambil kelas ini, yang merupakan bilangan bulat, 413 00:20:17,250 --> 00:20:19,050 dan mengubahnya menjadi string. 414 00:20:19,050 --> 00:20:23,970 >> Jadi saya mengambil modal s String semua jenis, Anda akan melihat, dikapitalisasi, 415 00:20:23,970 --> 00:20:26,280 Int, Double, String, seterusnya dan sebagainya. 416 00:20:26,280 --> 00:20:28,930 Semua dari mereka dikapitalisasi hanya untuk membuat segalanya lebih mudah. 417 00:20:28,930 --> 00:20:32,240 Dan kita akan mengatakan memanfaatkan String lulus ke dalamnya kelas. 418 00:20:32,240 --> 00:20:35,020 Dan itu akan membuat String dari integer yang. 419 00:20:35,020 --> 00:20:37,970 Dan kemudian kita bisa menggabungkan dua sangat baik. 420 00:20:37,970 --> 00:20:40,500 Pertanyaan tentang hal ini sejauh ini? 421 00:20:40,500 --> 00:20:43,770 Baiklah, mari kita membajak melalui ke nomor empat. 422 00:20:43,770 --> 00:20:47,870 >> Sekarang mari kita bicara tentang beberapa lebih maju struktur, seperti array dan loop. 423 00:20:47,870 --> 00:20:54,920 Dan tidak seperti C, array di cepat tidak diwakili oleh pointer. 424 00:20:54,920 --> 00:20:58,730 Pointer di cepat, meskipun mereka ada, disebut 425 00:20:58,730 --> 00:21:02,840 seperti pointer tidak aman atau beberapa jenis yang sama seperti ini, 426 00:21:02,840 --> 00:21:04,950 mereka tidak terkena biasanya Anda. 427 00:21:04,950 --> 00:21:07,300 Sehingga menjadi sangat sulit bagi Anda untuk memanipulasi 428 00:21:07,300 --> 00:21:10,020 memori langsung dari komputer Anda. 429 00:21:10,020 --> 00:21:11,670 >> Jadi array hanya tipe data. 430 00:21:11,670 --> 00:21:16,830 Dan mereka direferensikan menggunakan semacam ini notasi braket sekarang standar persegi 431 00:21:16,830 --> 00:21:18,280 yang telah Anda lihat sebelumnya. 432 00:21:18,280 --> 00:21:21,130 Tetapi ketika Anda benar-benar ingin menentukan jenis variabel 433 00:21:21,130 --> 00:21:24,330 sebagai array dari beberapa jenis tertentu, maka Anda 434 00:21:24,330 --> 00:21:27,150 menempatkan bahwa jenis dalam kurung persegi. 435 00:21:27,150 --> 00:21:30,260 Jadi apa yang saya katakan di sini adalah bahwa Aku sedang membuat sebuah variabel yang disebut 436 00:21:30,260 --> 00:21:33,930 nilai bertipe int array yang. 437 00:21:33,930 --> 00:21:37,380 Dan aku menetapkan bahwa sama dengan beberapa Data diinisialisasi, yang dalam hal ini 438 00:21:37,380 --> 00:21:42,960 adalah 100, 0, 90, 85, yang hanya koleksi nilai sewenang-wenang di sini. 439 00:21:42,960 --> 00:21:46,480 Sekarang dalam hal ini saya bisa, ingat, menghapus jenis, 440 00:21:46,480 --> 00:21:49,580 dan itu akan bisa menyimpulkan itu berdasarkan data diinisialisasi. 441 00:21:49,580 --> 00:21:51,990 Tapi jika saya dihapus ini dan Saya perlu untuk mengatur nanti, 442 00:21:51,990 --> 00:21:56,840 maka saya akan harus memastikan bahwa saya memiliki tipe sana. 443 00:21:56,840 --> 00:21:58,750 Baiklah, mari kita bersama. 444 00:21:58,750 --> 00:22:03,010 Jadi kita can-- array berikan kepada kami varietas 445 00:22:03,010 --> 00:22:07,130 metode melalui itu notasi titik pada Anda mungkin sekarang akrab dengan. 446 00:22:07,130 --> 00:22:10,360 Jadi grades.count, misalnya, memberitahu kita justru nomor 447 00:22:10,360 --> 00:22:13,680 elemen yang terkandung dalam array ini. 448 00:22:13,680 --> 00:22:17,260 >> Jika saya ingin menambahkan additional-- sekarang melihat bahwa ini adalah var 449 00:22:17,260 --> 00:22:20,140 dan not-- ini adalah variabel dan tidak konstan, yang 450 00:22:20,140 --> 00:22:24,410 berarti bahwa saya bisa mengubah isi array ini, saya bisa menambahkan objek untuk itu. 451 00:22:24,410 --> 00:22:28,870 Tapi aku tidak bisa mengatakan nilai dan kemudian dalam tanda kurung siku 452 00:22:28,870 --> 00:22:33,280 empat, karena itu akan menjadi dari kesalahan batas dalam hal ini. 453 00:22:33,280 --> 00:22:36,190 Jika saya ingin benar-benar berubah ukuran array ini, 454 00:22:36,190 --> 00:22:41,140 Saya harus menggunakan metode dot append ke menambahkan sesuatu pada bagian paling akhir itu. 455 00:22:41,140 --> 00:22:46,900 Aku bisa, bagaimanapun, perubahan indeks individu. 456 00:22:46,900 --> 00:22:48,920 >> Jadi saya bisa menggunakan nilai dan kurung kemudian persegi 457 00:22:48,920 --> 00:22:52,480 nol untuk memanipulasi indeks pertama dan seterusnya, seperti biasanya Anda harapkan. 458 00:22:52,480 --> 00:22:56,530 Dan aku bisa melakukan hal yang sama untuk benar-benar menerima data dari itu juga. 459 00:22:56,530 --> 00:23:00,420 Sekarang ada juga semacam metode mewah untuk melakukan hal ini, nilai ditambah equals 460 00:23:00,420 --> 00:23:02,525 dan kemudian indeks lain, yang akan append-- 461 00:23:02,525 --> 00:23:04,400 atau tidak lagi index-- tapi daftar lain yang 462 00:23:04,400 --> 00:23:07,340 akan menambahkan daftar tersebut ke bagian belakang kelas. 463 00:23:07,340 --> 00:23:09,780 Dan nilai akan kemudian mengandung semua itu. 464 00:23:09,780 --> 00:23:13,850 Tapi itu semacam hal ekstra bahwa aku hanya menunjukkan Anda untuk bersenang-senang. 465 00:23:13,850 --> 00:23:14,910 >> Sekarang ada untuk loop. 466 00:23:14,910 --> 00:23:18,970 Dan ini adalah awal dari mana hal mulai berubah sedikit. 467 00:23:18,970 --> 00:23:22,920 Perhatikan bagaimana ini loop berbeda untuk loop di C. 468 00:23:22,920 --> 00:23:26,470 Sekarang saya akan mencatat bahwa untuk loop di Swift bisa 469 00:23:26,470 --> 00:23:30,650 dibuat agar terlihat seperti untuk loop di C, tapi ada banyak konstruksi yang lebih berguna 470 00:23:30,650 --> 00:23:37,840 yang pada dasarnya menghilangkan kebutuhan untuk memiliki untuk var i sama dengan 0 koma i 471 00:23:37,840 --> 00:23:40,340 kurang dari beberapa panjang, seterusnya dan sebagainya, kan? 472 00:23:40,340 --> 00:23:42,940 Dan membangun ini hanya salah satu dari mereka. 473 00:23:42,940 --> 00:23:49,030 >> Untuk indeks, indeks baru variabel, dalam hal ini, dalam jangkauan. 474 00:23:49,030 --> 00:23:52,730 Dan apa yang saya katakan adalah bahwa ada rentang dari 0 sepanjang jalan sampai ke 475 00:23:52,730 --> 00:23:55,870 tetapi tidak termasuk grades.count. 476 00:23:55,870 --> 00:23:58,470 Jadi dot dot ini kurang dari tanda mewakili 477 00:23:58,470 --> 00:24:05,040 rentang nilai mulai dari nol semua jalan sampai ke grades.count minus 1. 478 00:24:05,040 --> 00:24:07,070 Ada terpisah operator yang ada, 479 00:24:07,070 --> 00:24:13,320 yang dot dot dot, yang akan berarti bahwa saya ingin kisaran nol 480 00:24:13,320 --> 00:24:16,310 untuk nilai menghitung inklusif. 481 00:24:16,310 --> 00:24:19,130 >> Tapi dalam kasus ini, karena ini array indeks nol, kita tentu saja 482 00:24:19,130 --> 00:24:23,290 tidak ingin pergi ke jumlah maksimum nilai. 483 00:24:23,290 --> 00:24:26,390 Saya dapat menjumlahkan nilai, seperti yang mungkin Anda berharap, dan output semua hal ini. 484 00:24:26,390 --> 00:24:29,620 OK, bergerak. 485 00:24:29,620 --> 00:24:32,270 Sekarang mari kita bicara tentang fungsi. 486 00:24:32,270 --> 00:24:35,465 Dalam rangka untuk menentukan fungsi Anda menggunakan kata kunci funk. 487 00:24:35,465 --> 00:24:38,090 Dan lagi, di Swift Anda harus berhati-hati dengan jenis. 488 00:24:38,090 --> 00:24:41,530 Anda berikan untuk itu parameter dengan mendefinisikan, misalnya, 489 00:24:41,530 --> 00:24:45,440 nama parameter dan kemudian di colin, jenis data 490 00:24:45,440 --> 00:24:47,690 Anda berharap bahwa parameter untuk menerima. 491 00:24:47,690 --> 00:24:50,700 >> Jadi dalam hal ini kita memiliki fungsi yang disebut menghitung cetak kelas. 492 00:24:50,700 --> 00:24:54,630 Ia menerima sebuah variabel yang disebut gradebook, atau lebih tepatnya parameter yang disebut gradebook. 493 00:24:54,630 --> 00:24:59,267 Dan kita mengharapkan gradebook yang menjadi sebuah array bilangan bulat. 494 00:24:59,267 --> 00:25:01,350 Jika gradebook yang kosong, kami akan mencetak satu hal. 495 00:25:01,350 --> 00:25:06,090 Kalau tidak, kita akan mencetak angka dari nilai yang ini sebenarnya memiliki. 496 00:25:06,090 --> 00:25:09,470 >> Sekarang jika kita ingin kembali beberapa nilai, maka cara 497 00:25:09,470 --> 00:25:14,595 bahwa kita memodifikasi definisi ini untuk benar-benar menggunakan ini panah kata kunci, 498 00:25:14,595 --> 00:25:16,870 atau menggunakan panah penanda ini. 499 00:25:16,870 --> 00:25:19,440 Jadi di sini kita akan mendefinisikan Fungsi yang disebut rata-rata. 500 00:25:19,440 --> 00:25:21,940 Kita akan menerima daftar nomor. 501 00:25:21,940 --> 00:25:25,430 Dan kita akan mengembalikan ganda, yang akan diharapkan 502 00:25:25,430 --> 00:25:31,270 menjadi rata-rata array ini. 503 00:25:31,270 --> 00:25:34,570 Dan untuk melakukan itu, dalam rangka untuk benar-benar menghitung rata-rata ini, 504 00:25:34,570 --> 00:25:38,651 kami akan mengambil jumlah dan kami will Tentu saja meringkas semua benda 505 00:25:38,651 --> 00:25:39,400 dalam array ini. 506 00:25:39,400 --> 00:25:41,480 >> Perhatikan bahwa ada baru gaya untuk loop di sini. 507 00:25:41,480 --> 00:25:45,450 Kami tidak harus eksplisit tentang iterasi setiap elemen tunggal, 508 00:25:45,450 --> 00:25:48,280 tapi kita malah bisa mengatakan untuk kelas dan gradebook, makna 509 00:25:48,280 --> 00:25:50,930 bahwa untuk setiap satu item yang kita miliki dalam hal ini, 510 00:25:50,930 --> 00:25:53,482 menyediakan item yang dalam hal ini variabel yang disebut kelas. 511 00:25:53,482 --> 00:25:54,940 Dan saya ingin melakukan sesuatu dengan itu. 512 00:25:54,940 --> 00:26:00,350 Jadi aku akan jumlah semua data ini dan benar-benar kembali divisi ganda. 513 00:26:00,350 --> 00:26:04,436 >> Sekarang perhatikan lagi di sini ada konsep pembagian bilangan bulat di Swift. 514 00:26:04,436 --> 00:26:06,810 Jika Anda ingin menggandakan divisi karena Anda ingin desimal, 515 00:26:06,810 --> 00:26:09,460 maka Anda harus eksplisit, bukan hanya tentang satu sisi, 516 00:26:09,460 --> 00:26:14,030 karena itu tidak akan memungkinkan Anda untuk memaksa Data di kedua sisi ini, 517 00:26:14,030 --> 00:26:17,030 Anda harus benar-benar saja kedua belah pihak menjadi ganda 518 00:26:17,030 --> 00:26:19,440 sehingga Anda sangat eksplisit tentang memastikan 519 00:26:19,440 --> 00:26:23,370 bahwa Anda melakukan pembagian ganda. 520 00:26:23,370 --> 00:26:26,150 >> Mari kita lanjutkan. 521 00:26:26,150 --> 00:26:31,150 Jadi jika saya benar-benar ingin accept-- sehingga dalam contoh ini, 522 00:26:31,150 --> 00:26:34,260 ini masih perintah aplikasi berbasis baris. 523 00:26:34,260 --> 00:26:37,920 Dan kita mulai melihat beberapa keterbatasan bahasa muda 524 00:26:37,920 --> 00:26:41,850 bahwa meskipun kita bisa mengakses argumen dengan menggunakan 525 00:26:41,850 --> 00:26:44,940 process.arguments ini, itu masih belum tentu terbersih 526 00:26:44,940 --> 00:26:46,200 hal yang pernah kami lihat. 527 00:26:46,200 --> 00:26:49,142 Tapi pada dasarnya saya mendorong Anda untuk semacam melihat kode ini 528 00:26:49,142 --> 00:26:51,100 dan mencoba untuk mencari tahu apa sebenarnya yang sedang terjadi. 529 00:26:51,100 --> 00:26:55,030 >> Pada dasarnya apa yang terjadi adalah bahwa kami mengambil daftar argumen 530 00:26:55,030 --> 00:26:57,610 dan memaksa mereka ke dalam bilangan bulat, dan kemudian kita 531 00:26:57,610 --> 00:27:03,620 akan menggunakannya sebagai cara untuk mencetak keluar rata-rata semua nilai kami. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Bergerak. 534 00:27:07,350 --> 00:27:11,190 Sekarang ada jenis lain dari data-- Data lain jenis bukan array 535 00:27:11,190 --> 00:27:14,940 disebut kamus, yang sangat mirip dengan hash tabel atau peta hash 536 00:27:14,940 --> 00:27:18,560 dan mirip juga dengan Array asosiatif PHP. 537 00:27:18,560 --> 00:27:20,770 Sehingga mereka memiliki gagasan kunci dan nilai-nilai. 538 00:27:20,770 --> 00:27:23,780 >> Dan mereka juga didefinisikan dengan notasi braket ini persegi, 539 00:27:23,780 --> 00:27:26,750 tetapi perbedaannya adalah bahwa kamus memiliki 540 00:27:26,750 --> 00:27:29,370 dalam braket persegi, titik dua. 541 00:27:29,370 --> 00:27:33,850 Dan usus besar memisahkan data ketik itu adalah kunci dan nilai. 542 00:27:33,850 --> 00:27:38,540 Jadi dalam hal ini, saya akan membuat kamus untuk menerima beberapa nilai. 543 00:27:38,540 --> 00:27:44,200 Dan itu akan menjadi tipe string: int, 544 00:27:44,200 --> 00:27:46,940 yang berarti bahwa semua kunci akan menjadi string, 545 00:27:46,940 --> 00:27:53,080 dan semua nilai-nilai mereka kunci akan menjadi bilangan bulat. 546 00:27:53,080 --> 00:27:55,780 >> Apakah ini berarti bahwa saya bisa kemudian referensi data spesifik 547 00:27:55,780 --> 00:28:00,490 yang ingin saya menggunakan kunci-kunci yang agak daripada menggunakan indeks numerik seperti saya 548 00:28:00,490 --> 00:28:04,350 akan memiliki untuk array standar. 549 00:28:04,350 --> 00:28:06,470 Sekarang mari kita lihat, ada satu hal penting 550 00:28:06,470 --> 00:28:10,790 bahwa saya juga ingin menyebutkan tentang urutan tertentu dari kode. 551 00:28:10,790 --> 00:28:12,910 Dan itu adalah bahwa ada jenis lain dari data, 552 00:28:12,910 --> 00:28:15,580 atau lebih tepatnya ada ini Ide data yang 553 00:28:15,580 --> 00:28:18,340 terkandung dalam Swift disebut optionals. 554 00:28:18,340 --> 00:28:21,270 >> Dan apa optionals berarti yang mengakui fakta 555 00:28:21,270 --> 00:28:27,500 bahwa kadang-kadang Anda tidak akan mendapatkan data yang benar-benar Anda harapkan. 556 00:28:27,500 --> 00:28:31,400 Dan apa yang saya maksud dengan itu is-- mari kita lihat ini urutan kode 557 00:28:31,400 --> 00:28:38,910 yang iterates atas semua argumen yang dilewatkan ke kode ini 558 00:28:38,910 --> 00:28:43,460 dan mencoba untuk mengubah mereka, mencoba untuk membagi menjadi berbagai string, 559 00:28:43,460 --> 00:28:47,310 karena menerima sangat jenis tertentu argumen. 560 00:28:47,310 --> 00:28:51,530 Dan kemudian akan mencoba untuk memaksa string yang mewakili angka 561 00:28:51,530 --> 00:28:55,460 menjadi bilangan bulat yang nilai, bahwa saya kemudian dapat menghitung. 562 00:28:55,460 --> 00:28:58,230 >> Jadi pada dasarnya aku akan menggunakan fungsi perpecahan ini yang 563 00:28:58,230 --> 00:29:00,080 ada dalam Swift perpustakaan standar. 564 00:29:00,080 --> 00:29:03,720 Aku akan masuk ke dalamnya string yang saya ingin membagi. 565 00:29:03,720 --> 00:29:06,980 Dan kemudian dalam menggunakan semacam sintaks funky, yang 566 00:29:06,980 --> 00:29:09,670 Saya tidak tahu apakah kita akan mendapatkan, tapi mungkin, kami 567 00:29:09,670 --> 00:29:14,320 benar-benar akan menentukan tepat Karakter yang ingin kita berpisah di. 568 00:29:14,320 --> 00:29:16,030 Jadi, apa ini benar-benar terlihat seperti? 569 00:29:16,030 --> 00:29:18,740 Mari kita lihat benar-benar menjalankan kode ini. 570 00:29:18,740 --> 00:29:22,000 >> Jadi misalnya, katakanlah saya memiliki kuis dan aku 50 itu. 571 00:29:22,000 --> 00:29:23,960 Dan aku punya PSETs dan Aku punya seratus itu. 572 00:29:23,960 --> 00:29:29,180 Dan saya got-- ada lagi kuis dan aku punya 40 itu. 573 00:29:29,180 --> 00:29:33,520 Saya tekan Enter, dan akhirnya apa yang akan terjadi adalah bahwa apa yang dilakukannya 574 00:29:33,520 --> 00:29:37,730 adalah mengambil parameter ini, pemisahan string pada titik dua ini, 575 00:29:37,730 --> 00:29:41,390 mengakui bahwa ada dua elemen di masing-masing, 576 00:29:41,390 --> 00:29:43,700 dan pada dasarnya melacak masing-masing. 577 00:29:43,700 --> 00:29:49,226 >> Jadi saya miliki dalam kamus saya kuis, yang Nilai diwakili dengan jumlah 50, 578 00:29:49,226 --> 00:29:54,290 Saya memiliki PSET yang memiliki nilai 100, dan kuis satu yang memiliki nilai 40. 579 00:29:54,290 --> 00:29:57,400 Lalu kemudian di dalam kode saya sebenarnya rata-rata semua nilai-nilai 580 00:29:57,400 --> 00:30:01,160 dan daftar semua kunci kamus khusus. 581 00:30:01,160 --> 00:30:03,217 Tapi ini penting sehingga Anda dapat melihat 582 00:30:03,217 --> 00:30:06,050 apa yang terjadi, adalah bahwa apa yang kita ingin lakukan adalah untuk mengambil string ini 583 00:30:06,050 --> 00:30:11,450 dan membaginya di karakter ini, yang bisa kita lakukan lagi dengan perpecahan ini 584 00:30:11,450 --> 00:30:15,690 fungsi menggunakan semacam ini sintaks yang menarik yang ada di sini. 585 00:30:15,690 --> 00:30:17,880 >> Hanya untuk saat ini menganggap bahwa itu OK. 586 00:30:17,880 --> 00:30:19,980 Kita akan melihat lebih ini hanya beberapa saat. 587 00:30:19,980 --> 00:30:23,230 Tapi sekarang ada yang menarik aspek yang kita benar-benar 588 00:30:23,230 --> 00:30:27,250 ingin mencoba untuk mengubahnya string ke integer. 589 00:30:27,250 --> 00:30:29,720 Namun dalam bahasa lain apa yang mungkin terjadi adalah 590 00:30:29,720 --> 00:30:33,440 bahwa kita mungkin akan mencoba melakukannya dan baik kembali 591 00:30:33,440 --> 00:30:36,185 semacam sentinel nilai seperti negatif 592 00:30:36,185 --> 00:30:39,420 atau mungkin nol atau sesuatu seperti itu. 593 00:30:39,420 --> 00:30:41,070 Atau mungkin itu hanya akan menyebabkan kesalahan. 594 00:30:41,070 --> 00:30:42,820 Dan kita harus kemudian menangkap kesalahan yang 595 00:30:42,820 --> 00:30:44,820 dan kemudian mencoba untuk melakukan sesuatu berdasarkan fakta 596 00:30:44,820 --> 00:30:48,280 bahwa konversi ini ke integer gagal. 597 00:30:48,280 --> 00:30:50,460 Di situlah ide ini dari optionals masuk. 598 00:30:50,460 --> 00:30:56,120 Anda benar-benar dapat membuat tipe data yang adalah tanda tanya int, misalnya. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Itu berarti bahwa bilangan bulat ini adalah, pada kenyataannya, opsional. 601 00:31:01,910 --> 00:31:05,980 Dan apa yang akan terjadi adalah bahwa hal itu mungkin mengandung integer, atau mungkin tidak. 602 00:31:05,980 --> 00:31:10,650 Mungkin, pada kenyataannya, menjadi ini lain Ide, seluruhnya disebut nill. 603 00:31:10,650 --> 00:31:14,900 Di mana itu berarti bahwa ada nilai apapun dalam hal ini. 604 00:31:14,900 --> 00:31:16,810 Ini bahkan tidak nol, tidak hanya ada nilai. 605 00:31:16,810 --> 00:31:18,790 Sama sekali tidak ada nilai yang diwakili. 606 00:31:18,790 --> 00:31:21,650 >> Dan itulah yang baris ini 71 lakukan. 607 00:31:21,650 --> 00:31:25,990 Adalah bahwa hal itu mengatakan bahwa saya ingin mencoba untuk menetapkan nilai, 608 00:31:25,990 --> 00:31:31,790 variabel disebut kelas, sama dengan konversi string ini ke int. 609 00:31:31,790 --> 00:31:34,010 Jadi saya telah mengambil string ini, ini komponen pertama, 610 00:31:34,010 --> 00:31:37,680 atau lebih tepatnya kedua komponen, karena ini 611 00:31:37,680 --> 00:31:40,770 adalah nol diindeks, ini string yang saya sudah berpisah. 612 00:31:40,770 --> 00:31:42,930 Dan saya ingin mengkonversi yang ke integer. 613 00:31:42,930 --> 00:31:46,730 Tapi itu mungkin tidak selalu melanjutkan biasanya, karena bayangkan 614 00:31:46,730 --> 00:31:50,710 apa yang akan terjadi jika, bukan jenis nomor, saya ketik saja seperti asdf. 615 00:31:50,710 --> 00:31:51,534 >> Itu akan gagal. 616 00:31:51,534 --> 00:31:54,200 Ini tidak benar-benar akan menjadi mampu mengkonversikan ke integer 617 00:31:54,200 --> 00:31:55,510 seperti yang saya harapkan. 618 00:31:55,510 --> 00:31:58,660 Jadi daripada kick off semacam kesalahan, 619 00:31:58,660 --> 00:32:01,210 kami memiliki ide ini opsional. 620 00:32:01,210 --> 00:32:04,240 Dan itu berarti bahwa menggunakan pertanyaan ini tanda yang bisa saya katakan, 621 00:32:04,240 --> 00:32:09,100 OK, apakah mungkin bahwa saya dapat mengambil ini, dikonversi menjadi sebuah int, 622 00:32:09,100 --> 00:32:12,630 dan memasukkannya ke dalam sebuah variabel, yang juga akan menjadi int. 623 00:32:12,630 --> 00:32:15,420 Jika demikian, maka itu berarti bahwa ini adalah sukses 624 00:32:15,420 --> 00:32:18,720 dan ini bagian pertama dari blok dapat melanjutkan. 625 00:32:18,720 --> 00:32:21,040 >> Jika tidak, itu gagal. 626 00:32:21,040 --> 00:32:25,840 Tidak ada nilai di grade-- atau bukan tidak ada nilai di yang ada, 627 00:32:25,840 --> 00:32:30,220 dan saya benar-benar harus mencoba untuk menangani kondisi kesalahan ini. 628 00:32:30,220 --> 00:32:33,340 Anda akan melihat ini tanda tanya sepanjang waktu 629 00:32:33,340 --> 00:32:35,990 di Swift dan dalam contoh kode untuk Swift. 630 00:32:35,990 --> 00:32:40,980 Dan pada kenyataannya operator nill, semacam ini dari tanda tanya, bagian optionals, 631 00:32:40,980 --> 00:32:45,057 akan menjadi mungkin salah satu hal yang lebih sulit 632 00:32:45,057 --> 00:32:47,640 untuk jenis membungkus kepala Anda sekitar Anda benar-benar bekerja dengan itu. 633 00:32:47,640 --> 00:32:48,490 >> Mungkin masuk akal sekarang. 634 00:32:48,490 --> 00:32:50,760 Dan pada kenyataannya, ketika saya masih menulis kode contoh untuk ini, 635 00:32:50,760 --> 00:32:52,780 tentu aku mengerti apa yang sedang terjadi, 636 00:32:52,780 --> 00:32:55,570 tapi masih menangkap saya dengan Kejutan setiap begitu sering 637 00:32:55,570 --> 00:32:58,370 ketika saya akan menemukan bahwa beberapa data sebenarnya 638 00:32:58,370 --> 00:33:04,024 versi nihil, versi opsional data yang kuharapkan. 639 00:33:04,024 --> 00:33:06,190 Jadi hanya menyadari bahwa jika Anda memiliki versi opsional 640 00:33:06,190 --> 00:33:09,360 Anda harus membongkar bahwa Data dari kotak ini. 641 00:33:09,360 --> 00:33:15,870 >> Jadi itu semacam Aku-- bayangkan jika Anda memiliki kotak dan berisi sesuatu. 642 00:33:15,870 --> 00:33:18,490 Dan apa yang perlu Anda lakukan adalah untuk mengajukan pertanyaan, 643 00:33:18,490 --> 00:33:22,800 adalah mungkin bahwa kotak ini sebenarnya berisi data yang saya cari? 644 00:33:22,800 --> 00:33:28,180 Jika demikian, lalu tarik data dan memasukkannya ke dalam variabel ini sudah ada. 645 00:33:28,180 --> 00:33:32,080 Jika tidak, maka saya hanya harus mengabaikan isi kotak ini 646 00:33:32,080 --> 00:33:34,310 sama sekali karena harfiah mengandung apa-apa. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Pertanyaan ini? 649 00:33:40,400 --> 00:33:44,430 OK, mari kita menjauh dari ini semacam baris perintah berbasis 650 00:33:44,430 --> 00:33:47,610 dan mulai melihat beberapa teknologi 651 00:33:47,610 --> 00:33:53,060 bahwa Xcode menyediakan bagi kita dalam bentuk bermain. 652 00:33:53,060 --> 00:33:56,669 Jadi ada banyak Kemampuan di sini dengan Swift. 653 00:33:56,669 --> 00:33:59,210 Dan jika Anda membuka Xcode dan meminta Anda apa yang ingin Anda lakukan, 654 00:33:59,210 --> 00:34:01,340 Anda dapat membuka taman bermain dan hanya bermain-main 655 00:34:01,340 --> 00:34:06,200 dengan banyak struktur yang berbeda dan aspek bahasa 656 00:34:06,200 --> 00:34:11,800 bahkan sebelum Anda mulai menyentuh iOS SDK atau Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Jadi kasus ini, mari kita mengatakan bahwa saya have-- Saya punya contoh yang relatif dibikin 658 00:34:15,670 --> 00:34:18,460 di sini, tapi beruang dengan saya seperti yang kita semacam dari bekerja melalui contoh ini. 659 00:34:18,460 --> 00:34:22,639 Mari kita mengatakan bahwa kita harus melakukan banyak eksponen dengan nilai tetap, 660 00:34:22,639 --> 00:34:26,397 seperti kita tahu bahwa kita akan perlu melakukan banyak kekuatan persegi, misalnya. 661 00:34:26,397 --> 00:34:28,980 Jadi kita akan mengambil beberapa nilai x, kita akan persegi itu, 662 00:34:28,980 --> 00:34:30,540 kita akan mengambil beberapa nilai y dan kita akan persegi itu. 663 00:34:30,540 --> 00:34:31,780 Seterusnya dan sebagainya. 664 00:34:31,780 --> 00:34:35,549 >> Sekarang kita mungkin sebenarnya hanya membuat kekuatan 2 fungsi untuk ini, kan? 665 00:34:35,549 --> 00:34:37,090 Jadi kita akan membuat kekuatan 2 fungsi. 666 00:34:37,090 --> 00:34:38,600 Kami akan menerima ganda. 667 00:34:38,600 --> 00:34:41,489 Kami akan output-- atau kita akan kembali jenis ganda. 668 00:34:41,489 --> 00:34:46,159 Kami akan mengambil hasil ini dan kemudian untuk dua kali 669 00:34:46,159 --> 00:34:52,040 apa yang sebenarnya kita mengambil hasil yang adalah yang diinisialisasi ke nilai satu, 670 00:34:52,040 --> 00:34:53,090 dan kalikan dengan x. 671 00:34:53,090 --> 00:34:56,540 Jadi pada intinya kita memiliki x kali x sini. 672 00:34:56,540 --> 00:35:01,860 >> Dan kemudian saya kemudian bisa, karena kita mungkin mengharapkan, ambil ini, menjalankan kuasa 2, 673 00:35:01,860 --> 00:35:03,680 menyediakan untuk itu beberapa data, saya suka 2.0. 674 00:35:03,680 --> 00:35:05,756 Dan kita bisa melihat hasilnya di sini 4.0. 675 00:35:05,756 --> 00:35:09,200 Jalankan kekuatan 2 pada 3,2 dan kami bisa melihat hasil kami, 10,24. 676 00:35:09,200 --> 00:35:10,840 Sejauh ini cukup baik, kan? 677 00:35:10,840 --> 00:35:12,070 Sekarang kita berpikir, baik, OK. 678 00:35:12,070 --> 00:35:15,530 Sekarang aku benar-benar perlu melakukan banyak kekuatan 3. 679 00:35:15,530 --> 00:35:19,180 Jadi saya akan copy paste semua kode ini, mengubah nama fungsi dari 680 00:35:19,180 --> 00:35:24,440 kekuatan 2 kekuasaan dari 3, dan semuanya akan sama kecuali nilai ini 681 00:35:24,440 --> 00:35:26,740 di sini, kisaran ini, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Jadi daripada mengulangi lingkaran ini dua kali, 683 00:35:29,590 --> 00:35:31,880 Saya ingin mengulangi lingkaran ini tiga kali. 684 00:35:31,880 --> 00:35:36,330 Jadi saya hanya mengubah nilai dari 1 3-- atau lebih tepatnya 2-3. 685 00:35:36,330 --> 00:35:39,230 Jadi sekali lagi, kode yang sama, itulah satu-satunya perubahan. 686 00:35:39,230 --> 00:35:40,080 Sekarang ini juga bekerja. 687 00:35:40,080 --> 00:35:43,860 Kekuatan 3 diberikan dalam beberapa nilai 2. 688 00:35:43,860 --> 00:35:44,420 Kami mendapatkan 8. 689 00:35:44,420 --> 00:35:45,370 Jadi 2 potong dadu. 690 00:35:45,370 --> 00:35:48,060 Dan 3,2 potong dadu adalah 32,768. 691 00:35:48,060 --> 00:35:50,597 Dan sejauh ini begitu baik, kan? 692 00:35:50,597 --> 00:35:52,930 Tapi mudah-mudahan ini sedikit sedikit bendera merah untuk Anda 693 00:35:52,930 --> 00:35:55,530 bahwa kita sekarang memiliki beberapa duplikasi kode 694 00:35:55,530 --> 00:35:58,800 kecuali untuk beberapa sangat kecil berubah dari satu ke yang berikutnya. 695 00:35:58,800 --> 00:36:02,170 Jadi ada beberapa cara yang kita mungkin bisa menyederhanakan 696 00:36:02,170 --> 00:36:06,080 masalah ini, di mana kita benar-benar dapat, pada waktu berjalan, mencari tahu beberapa, 697 00:36:06,080 --> 00:36:11,320 memberikan kepada kita beberapa fungsi yang memiliki justru kekuatan yang kita inginkan. 698 00:36:11,320 --> 00:36:13,960 >> Dan ada gagasan ini penutupan, yang benar-benar, benar-benar 699 00:36:13,960 --> 00:36:18,180 penting dalam konteks Swift, dan dalam banyak bahasa lain juga. 700 00:36:18,180 --> 00:36:21,580 Tapi mungkin Anda akan melihat digunakan lebih di Swift 701 00:36:21,580 --> 00:36:23,650 karena itu tertanam dalam bahasa 702 00:36:23,650 --> 00:36:28,280 daripada Anda akan di lain juga bahasa modern. 703 00:36:28,280 --> 00:36:31,140 Jadi ide penutupan adalah ini, adalah bahwa kita 704 00:36:31,140 --> 00:36:35,430 dapat memiliki fungsi yang dimaksudkan untuk menjadi fungsi generik, kekuatan generik 705 00:36:35,430 --> 00:36:36,860 fungsi. 706 00:36:36,860 --> 00:36:41,010 >> Dan fungsi ini akan menerima eksponen ini yang kita benar-benar 707 00:36:41,010 --> 00:36:42,990 ingin membuat. 708 00:36:42,990 --> 00:36:46,550 Jadi misalnya, pertama Misalnya, kami ingin kekuatan 2. 709 00:36:46,550 --> 00:36:50,050 Jadi kita akan memberikan kekuatan dan kemudian dalam kurung 2. 710 00:36:50,050 --> 00:36:52,490 Dan sekarang perhatikan apa ini benar-benar kembali. 711 00:36:52,490 --> 00:36:57,680 Ini membutuhkan masukan dari primer disebut y yang adalah bilangan bulat, 712 00:36:57,680 --> 00:37:03,090 dan mengembalikan ini gila mencari hal dalam kurung parentheses-- 713 00:37:03,090 --> 00:37:06,230 ganda dan kemudian panah ganda. 714 00:37:06,230 --> 00:37:10,270 >> Apakah ini berarti bahwa aku akan kembali fungsi. 715 00:37:10,270 --> 00:37:13,510 Aku tidak kembali jenis lain dari data, saya 716 00:37:13,510 --> 00:37:16,350 sebenarnya kembali fungsi yang memiliki parameter ini, bahwa 717 00:37:16,350 --> 00:37:22,680 menerima ganda sebagai masukan dan output ganda sebagai nilai kembali. 718 00:37:22,680 --> 00:37:29,750 Dan sebagai hasilnya, karena sekarang aku sudah menelepon kekuatan, lewat di beberapa nilai y, 719 00:37:29,750 --> 00:37:32,280 dan aku membuat ini lain pemberitahuan function-- bahwa ada 720 00:37:32,280 --> 00:37:35,980 fungsi lain yang sedang dibuat dalam this-- apa yang saya lakukan 721 00:37:35,980 --> 00:37:37,830 adalah saya kemudian dapat mengubah nilai tersebut, yang 722 00:37:37,830 --> 00:37:41,010 nilai yang saya telah berubah 2-3, sekarang saya membuatnya y. 723 00:37:41,010 --> 00:37:42,500 >> Dan ini terus berlanjut. 724 00:37:42,500 --> 00:37:48,530 Jadi setiap kali saya sebut kekuatan dari, pada dasarnya apa yang terjadi 725 00:37:48,530 --> 00:37:51,030 adalah bahwa saya mendapatkan kembali fungsi. 726 00:37:51,030 --> 00:37:54,310 Perhatikan bahwa di sini saya telah didefinisikan variabel baru bernama persegi. 727 00:37:54,310 --> 00:37:59,340 Aku sudah mengaturnya sama dengan kekuatan, memberikan nilai ini 2 sampai kekuatan. 728 00:37:59,340 --> 00:38:02,030 Dan apa ini kembali adalah fungsi. 729 00:38:02,030 --> 00:38:05,970 Jadi persegi, variabel persegi, kini tipe fungsi 730 00:38:05,970 --> 00:38:11,390 yang memiliki this-- oops, gulir ke atas sebuah sedikit bit-- yang memiliki tanda tangan ini, 731 00:38:11,390 --> 00:38:15,560 menerima ganda dan output ganda. 732 00:38:15,560 --> 00:38:17,330 >> Jadi sekarang apa yang telah kulakukan adalah saya sudah pada dasarnya 733 00:38:17,330 --> 00:38:22,890 menciptakan fungsi yang disebut persegi yang menerima nilai apapun dan akan persegi itu. 734 00:38:22,890 --> 00:38:24,960 Kita bisa melihat apa yang terjadi di sini. 735 00:38:24,960 --> 00:38:29,960 Persegi 3 misalnya, berarti aku akan untuk mengambil nilai 3 dan kuadrat itu. 736 00:38:29,960 --> 00:38:32,010 Jadi bagaimana tepatnya cara kerjanya? 737 00:38:32,010 --> 00:38:37,800 Ketika saya melewati kekuatan 2-- ketika saya lulus 2 ke dalam kekuasaan ini fungsi, 738 00:38:37,800 --> 00:38:44,430 variabel ini adalah y diisi dengan nilai yang 2. 739 00:38:44,430 --> 00:38:46,340 Dan yang semacam diadakan di memori. 740 00:38:46,340 --> 00:38:49,430 Itu semacam suka diadakan di negara di suatu tempat di komputer, 741 00:38:49,430 --> 00:38:51,980 kita tidak benar-benar peduli bagaimana atau di mana pada saat ini. 742 00:38:51,980 --> 00:38:54,692 >> Tapi saya kembali fungsi ini disebut exponentiate. 743 00:38:54,692 --> 00:38:57,400 Dan lagi, itu tidak terlalu penting apa fungsi ini dipanggil, 744 00:38:57,400 --> 00:39:01,730 kita benar-benar bisa menyebutnya apa saja, yang menerima ganda dan mengembalikan ganda, 745 00:39:01,730 --> 00:39:05,640 tetapi menggunakan nilai ini y di dalamnya. 746 00:39:05,640 --> 00:39:09,290 Jadi meskipun itu fungsi ini, Fungsi exponentiater ini yang 747 00:39:09,290 --> 00:39:13,600 telah kembali kembali ke saya variabel yang aku menelepon persegi, 748 00:39:13,600 --> 00:39:17,980 telah terkandung di dalamnya Gagasan ini apa y itu. 749 00:39:17,980 --> 00:39:19,070 Dan ingat bahwa. 750 00:39:19,070 --> 00:39:24,810 >> Jadi setiap kali saya memanggil fungsi yang sekarang disebut persegi, menggunakan itu. 751 00:39:24,810 --> 00:39:27,990 Tapi ini juga berarti bahwa saya bisa membuat variabel lain menggunakan 752 00:39:27,990 --> 00:39:29,120 kekuatan yang berbeda. 753 00:39:29,120 --> 00:39:33,240 Jadi saya bisa membuat variabel kubus, untuk Misalnya, berikan itu kekuatan 3. 754 00:39:33,240 --> 00:39:37,230 Sekarang kubus benar-benar akan mengambil beberapa nilai dan kubus itu dan mengembalikannya. 755 00:39:37,230 --> 00:39:39,570 Jadi kita bisa melihat bahwa saya mendapatkan nilai 8 dari itu. 756 00:39:39,570 --> 00:39:42,720 >> Tapi itu nilai y belum berubah karena mereka 757 00:39:42,720 --> 00:39:44,980 diadakan di semacam variabel independen. 758 00:39:44,980 --> 00:39:47,480 Mereka semacam diadakan di ruang independen dalam memori. 759 00:39:47,480 --> 00:39:51,290 Jadi kubus akan selalu memiliki x pangkat 3. 760 00:39:51,290 --> 00:39:55,380 Dan persegi akan selalu memiliki x pangkat 2, yang 761 00:39:55,380 --> 00:39:58,470 berarti persegi yang selalu akan nomor persegi, seperti yang saya harapkan. 762 00:39:58,470 --> 00:40:01,794 Dan kubus akan selalu potong dadu angka, seperti yang saya harapkan. 763 00:40:01,794 --> 00:40:04,960 Ini juga berarti bahwa kadang-kadang Anda bisa mendapatkan semacam funky mencari sintaks 764 00:40:04,960 --> 00:40:09,030 di mana Anda memiliki kekuatan di bagian paling bawah layar di sini, kekuatan 5. 765 00:40:09,030 --> 00:40:11,410 Dan Anda masuk ke hasilnya. 766 00:40:11,410 --> 00:40:14,670 Anda memanggil fungsi yang dikembalikan dengan nomor 4. 767 00:40:14,670 --> 00:40:17,440 Dan jadi apa dasarnya ini adalah 4 sampai kekuatan kelima, 768 00:40:17,440 --> 00:40:20,830 kita bisa melihat hasilnya di sana. 769 00:40:20,830 --> 00:40:23,690 Dengan saya sejauh ini? 770 00:40:23,690 --> 00:40:26,620 >> Jadi, ide ini disebut penutupan, karena apa yang kita lakukan pada dasarnya 771 00:40:26,620 --> 00:40:30,610 adalah kita encapsulating beberapa data into-- semacam 772 00:40:30,610 --> 00:40:33,050 melampirkan data ini ke fungsi dan kami 773 00:40:33,050 --> 00:40:36,240 mampu menggunakan kembali fungsi ini. 774 00:40:36,240 --> 00:40:41,480 Sekarang sintaks ini meskipun sebenarnya bisa disederhanakan jumlah besar. 775 00:40:41,480 --> 00:40:45,005 Dan ada banyak kemungkinan di Swift untuk penyederhanaan ini. 776 00:40:45,005 --> 00:40:47,780 Dan itulah yang semacam itu yang selanjutnya benar-benar melihat. 777 00:40:47,780 --> 00:40:51,400 Jadi 7b misalnya, kita mengambil kode yang sama persis. 778 00:40:51,400 --> 00:40:54,360 >> Tapi sekarang bukannya sebenarnya mendefinisikan fungsi 779 00:40:54,360 --> 00:40:57,910 dalam kekuasaan ini berfungsi dan memberikan nama, 780 00:40:57,910 --> 00:41:00,150 dan kemudian kembali nama fungsi itu, yang 781 00:41:00,150 --> 00:41:02,357 kemudian digunakan sebagai bagian dari penutupan ini, bukan kita 782 00:41:02,357 --> 00:41:03,440 hanya akan menyederhanakannya. 783 00:41:03,440 --> 00:41:06,580 Kita tidak perlu fungsi ini diberi nama. 784 00:41:06,580 --> 00:41:09,760 Jadi ini adalah konsep fungsi anonim di mana kita bisa kemudian 785 00:41:09,760 --> 00:41:15,180 menerima sebagai masukan, dalam kurung di sini, x variabel yang bertipe double. 786 00:41:15,180 --> 00:41:17,250 >> Kita akan mengembalikan tipe double. 787 00:41:17,250 --> 00:41:19,830 Dan kemudian kata kunci, n, adalah awal fungsi ini. 788 00:41:19,830 --> 00:41:22,180 Jadi melihat bahwa semua ini adalah dalam kurung keriting 789 00:41:22,180 --> 00:41:25,310 dan kita mendefinisikan anonim berfungsi di sini. 790 00:41:25,310 --> 00:41:29,910 Hanya cara sederhana mendefinisikan hal yang sama persis. 791 00:41:29,910 --> 00:41:30,810 OKE? 792 00:41:30,810 --> 00:41:36,740 Tapi tunggu, Swift sebenarnya memungkinkan kita untuk melangkah lebih jauh dan menyederhanakan bahkan lebih, 793 00:41:36,740 --> 00:41:40,180 karena benar-benar kita tidak peduli bahwa parameter ini 794 00:41:40,180 --> 00:41:41,700 bernama hal tertentu. 795 00:41:41,700 --> 00:41:48,090 Hal ini dapat benar-benar disebut apa-apa dan kita masih bisa menggunakan parameter pertama. 796 00:41:48,090 --> 00:41:53,800 >> Jadi sebenarnya ada ini khusus jenis data dalam fungsi anonim, 797 00:41:53,800 --> 00:41:57,710 ada nama ini khusus variabel dalam fungsi anonim 798 00:41:57,710 --> 00:42:00,280 yang mulai dengan tanda dolar dan mewakili 799 00:42:00,280 --> 00:42:03,785 nomor parameter, nol diindeks, untuk fungsi ini. 800 00:42:03,785 --> 00:42:05,410 Jadi ada beberapa hal yang terjadi. 801 00:42:05,410 --> 00:42:08,550 Di sini saya akan kembali, dan kemudian penjepit keriting yang mewakili fungsi, 802 00:42:08,550 --> 00:42:09,050 yang tepat? 803 00:42:09,050 --> 00:42:13,920 >> Perhatikan bahwa saya tidak telah menetapkan jenis parameter atau jenis kembali. 804 00:42:13,920 --> 00:42:16,460 Hal sebenarnya dapat disimpulkan karena tanda tangan 805 00:42:16,460 --> 00:42:18,360 fungsi asli ini. 806 00:42:18,360 --> 00:42:20,500 Jadi kita bisa menghilangkan bahwa sebagai suatu kemungkinan. 807 00:42:20,500 --> 00:42:25,120 Tapi juga saya dapat menggunakan tanda dolar nol sampai merupakan parameter pertama ini yang 808 00:42:25,120 --> 00:42:28,200 dilewatkan ke fungsi anonim ini. 809 00:42:28,200 --> 00:42:31,630 Jadi menyederhanakan bahkan lebih. 810 00:42:31,630 --> 00:42:32,750 OKE? 811 00:42:32,750 --> 00:42:33,820 Sejauh ini, begitu baik? 812 00:42:33,820 --> 00:42:36,980 >> Sekarang type-- ini kau ingat dollar ini tanda nol 813 00:42:36,980 --> 00:42:40,130 yang kita lihat dalam kurung kurawal ini yang kita lihat hanya sebentar 814 00:42:40,130 --> 00:42:43,870 lalu dalam Swift enam contoh? 815 00:42:43,870 --> 00:42:46,560 Itu di sini. 816 00:42:46,560 --> 00:42:48,430 Perhatikan itulah apa yang kita sedang melihat, 817 00:42:48,430 --> 00:42:51,580 adalah bahwa kita sudah berpindah ke dalam fungsi perpecahan ini 818 00:42:51,580 --> 00:42:55,140 fungsi anonim yang memeriksa parameter pertama 819 00:42:55,140 --> 00:42:57,830 untuk melihat apakah sama dengan simbol usus. 820 00:42:57,830 --> 00:42:59,830 Dan itulah apa yang terjadi, adalah bahwa semua 821 00:42:59,830 --> 00:43:02,320 kita doing-- pengembalian kata kunci yang tersirat 822 00:43:02,320 --> 00:43:05,800 di case-- ini kita kembali nilai ini di mana kita membandingkan 823 00:43:05,800 --> 00:43:10,020 parameter pertama melawan usus karakter ini. 824 00:43:10,020 --> 00:43:11,730 Dan sehingga semacam demystifies ini. 825 00:43:11,730 --> 00:43:17,210 Dan Anda akan melihat konstruksi ini banyak dalam sintaks Swift, jadi jangan ingat- 826 00:43:17,210 --> 00:43:19,400 dalam pikiran ketika Anda mengambil melihat ini. 827 00:43:19,400 --> 00:43:21,970 Sekarang kita bisa turun rel sedikit 828 00:43:21,970 --> 00:43:25,460 dan pergi benar-benar mewah yang menunjukkan bahkan beberapa lebih dari kekuatan Swift. 829 00:43:25,460 --> 00:43:27,950 Anda bahkan mungkin akan melihat beberapa ini dalam kode sampel. 830 00:43:27,950 --> 00:43:29,790 Jadi itu sebabnya aku akan untuk menunjukkan hal ini kepada Anda. 831 00:43:29,790 --> 00:43:37,260 >> Pada dasarnya apa yang bisa kita lakukan adalah, pertama dari semua, itu adalah semacam perlu bagi saya 832 00:43:37,260 --> 00:43:41,710 untuk melaksanakan semua itu kekuatan kode karena jika Anda mengimpor Darwin 833 00:43:41,710 --> 00:43:46,490 perpustakaan, itu benar-benar termasuk fungsi disebut pow yang melakukan ini untuk Anda. 834 00:43:46,490 --> 00:43:50,570 Jadi kita dapat menyederhanakan bahkan lebih dan memiliki kuasa atas fungsi kita sekarang hanya 835 00:43:50,570 --> 00:43:54,890 menjadi indah satu kapal di mana kita hanya kembali fungsi anonim ini yang 836 00:43:54,890 --> 00:44:00,780 menerima dollar tanda 0 sebagai yang dasar dan y sebagai eksponen. 837 00:44:00,780 --> 00:44:02,582 >> Tapi kita bisa benar-benar, benar-benar mewah ketika kita 838 00:44:02,582 --> 00:44:04,790 menyadari bahwa Swift memiliki banyak daya di bawah tenda. 839 00:44:04,790 --> 00:44:07,010 Banyak operator yang kita sudah berhadapan dengan, 840 00:44:07,010 --> 00:44:11,270 ditambah tanda-tanda dan simbol-simbol perpecahan dan semua hal yang Anda biasanya 841 00:44:11,270 --> 00:44:15,620 beroperasi dengan dengan tipe data dalam bahasa pemrograman, 842 00:44:15,620 --> 00:44:17,600 sebenarnya extensible di Swift. 843 00:44:17,600 --> 00:44:21,460 Jadi apa artinya dalam kita yang dapat menentukan operator kita sendiri. 844 00:44:21,460 --> 00:44:26,020 >> Jadi sekarang saya lelah mengetik dalam semua ini pow dan kemudian kurung dan kemudian 845 00:44:26,020 --> 00:44:26,520 dasar. 846 00:44:26,520 --> 00:44:27,520 Saya tidak ingin melakukan itu. 847 00:44:27,520 --> 00:44:30,190 Aku benar-benar ingin memiliki Operator yang memungkinkan saya untuk melakukan itu. 848 00:44:30,190 --> 00:44:34,510 Jadi saya bisa mengatakan bahwa saya ingin Swift untuk membuat operator, bintang 849 00:44:34,510 --> 00:44:39,472 star-- dengan cara saya tidak dapat menggunakan karat karena karat yang merupakan operator yang 850 00:44:39,472 --> 00:44:40,680 melakukan sesuatu yang lain sama sekali. 851 00:44:40,680 --> 00:44:42,720 Jadi saya tidak ingin menyortir dari bertabrakan dengan itu. 852 00:44:42,720 --> 00:44:45,750 Dan apa yang Anda lihat dalam varietas bahasa, termasuk Python, 853 00:44:45,750 --> 00:44:48,810 seperti Operator bintang bintang untuk mewakili eksponen. 854 00:44:48,810 --> 00:44:50,730 >> Jadi itulah satu-satunya alasan mengapa saya telah melakukan itu. 855 00:44:50,730 --> 00:44:53,067 Dan itu akan menjadi operator jenis infiks. 856 00:44:53,067 --> 00:44:54,900 Dan saya harus memberikan untuk itu beberapa informasi 857 00:44:54,900 --> 00:44:58,386 tentang diutamakan ini Operator jadi asosiatif kiri. 858 00:44:58,386 --> 00:45:00,260 Ini seperti yang relatif didahulukan tinggi dibandingkan 859 00:45:00,260 --> 00:45:02,432 untuk penjumlahan atau perkalian. 860 00:45:02,432 --> 00:45:04,140 Ini prioritas lebih tinggi dari semua orang. 861 00:45:04,140 --> 00:45:04,931 Seterusnya dan sebagainya. 862 00:45:04,931 --> 00:45:07,410 Dan kemudian saya menentukan fungsi yang sebenarnya 863 00:45:07,410 --> 00:45:10,070 menentukan apa Operator ini tidak. 864 00:45:10,070 --> 00:45:14,150 Jadi asumsi bahwa saya memiliki kiri sisi dan sisi kanan, 865 00:45:14,150 --> 00:45:17,330 yang akan mungkin nama variabel yang lebih baik untuk ini. 866 00:45:17,330 --> 00:45:20,690 Sisi kiri dan sisi kanan. 867 00:45:20,690 --> 00:45:26,740 Saya kemudian dapat mengambil kekuatan ini dari sisi kiri ke sisi kanan 868 00:45:26,740 --> 00:45:28,980 dan mengembalikan nilai itu. 869 00:45:28,980 --> 00:45:30,370 Jadi sekarang itu super manis. 870 00:45:30,370 --> 00:45:33,790 Yang harus kita lakukan adalah bintang 2 star 3 dan itu adalah 2 pangkat ketiga, 871 00:45:33,790 --> 00:45:35,290 dan kita mendapatkan nilai 8. 872 00:45:35,290 --> 00:45:40,280 Bintang 2 Bintang 10 adalah 2 ke Kekuatan-10, kita mendapatkan 1.024. 873 00:45:40,280 --> 00:45:43,630 >> Jadi sekarang kekuatan kita fungsi, yang lagi berbeda, 874 00:45:43,630 --> 00:45:47,030 karena seluruh ide di balik ini adalah bahwa kita memiliki satu fungsi yang 875 00:45:47,030 --> 00:45:50,700 selalu mengambil beberapa nilai dan mengalikan itu-- atau lebih tepatnya 876 00:45:50,700 --> 00:45:53,240 mengambil eksponen dengan kekuatan yang sama. 877 00:45:53,240 --> 00:45:54,300 Jadi sekarang ini lebih sederhana. 878 00:45:54,300 --> 00:45:57,070 Jadi sekarang itu hanya dolar menandatangani 0 bintang y bintang. 879 00:45:57,070 --> 00:46:01,190 Kami bahkan tidak harus menggunakan pow lagi. 880 00:46:01,190 --> 00:46:03,020 >> OK, siapa yang hilang? 881 00:46:03,020 --> 00:46:03,700 Apakah kita melakukan OK? 882 00:46:03,700 --> 00:46:05,090 Pertanyaan tentang hal ini? 883 00:46:05,090 --> 00:46:05,815 Ya? 884 00:46:05,815 --> 00:46:09,500 >> AUDIENCE: Ketika you-- [tidak terdengar] kekuatan funk y ganda. 885 00:46:09,500 --> 00:46:11,441 Jadi, ketika Anda kembali fungsi. 886 00:46:11,441 --> 00:46:13,190 DANIEL Armendariz: Funk kekuatan y ganda. 887 00:46:13,190 --> 00:46:14,270 Oh ya, saya tidak tahu apa nomor y. 888 00:46:14,270 --> 00:46:15,708 Maaf tentang itu. 889 00:46:15,708 --> 00:46:19,420 >> AUDIENCE: Mengapa Anda kembali fungsi [tidak terdengar] kandang. 890 00:46:19,420 --> 00:46:24,214 Bukankah dolar bintang nol Bintang y [tidak terdengar] 891 00:46:24,214 --> 00:46:29,710 menemukan bahwa operator dengan itu kembali double [tak terdengar] dua kali lipat? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL Armendariz: Jadi mari saya menjawab pertanyaan Anda 893 00:46:32,742 --> 00:46:35,950 bagaimana saya memahaminya dan Anda dapat memberitahu saya jika saya tidak mengerti pertanyaan Anda. 894 00:46:35,950 --> 00:46:42,850 Jadi membangun ini, penjepit keriting tanda dolar y bintang bintang nol, 895 00:46:42,850 --> 00:46:44,280 adalah fungsi. 896 00:46:44,280 --> 00:46:50,080 Dan ia menerima parameter yang diwakili oleh tanda dolar ini nol. 897 00:46:50,080 --> 00:46:55,830 Kembalinya kata kunci tersirat dalam sangat singkat, sintaks fungsi anonim. 898 00:46:55,830 --> 00:46:57,870 >> Yang berarti bahwa pada dasarnya apa ini mengatakan 899 00:46:57,870 --> 00:47:01,270 adalah bahwa saya mendefinisikan function-- dan kemudian aku akan 900 00:47:01,270 --> 00:47:05,320 sebut saja something-- di mana saya memiliki beberapa nilai y. 901 00:47:05,320 --> 00:47:08,300 Saya memiliki y, yang dua kali lipat. 902 00:47:08,300 --> 00:47:10,750 Dan aku kembali ganda. 903 00:47:10,750 --> 00:47:19,010 Dan aku punya dalam pengembalian yang y-- maaf, Saya tidak harus disebut x y-- ini. 904 00:47:19,010 --> 00:47:20,240 Oh sayang, oh sayang, oh sayang. 905 00:47:20,240 --> 00:47:27,440 X-- nope-- bintang bintang y. 906 00:47:27,440 --> 00:47:29,720 >> Jadi ini hanya versi sederhana dari ini. 907 00:47:29,720 --> 00:47:33,990 Dan alasan bahwa saya punya dolar Tanda nol adalah bahwa menggunakan kandang ini 908 00:47:33,990 --> 00:47:41,050 berarti bahwa saya tidak lagi memiliki untuk mengetik pow, atau tidak lagi melakukan 909 00:47:41,050 --> 00:47:45,570 Saya harus melakukan sesuatu seperti bintang 3 bintang 2. 910 00:47:45,570 --> 00:47:48,530 Aku hanya bisa memiliki satu fungsi yang disebut persegi 911 00:47:48,530 --> 00:47:50,820 yang akan selalu mengambil beberapa nilai sebagai masukan 912 00:47:50,820 --> 00:47:52,980 dan benar-benar kembali alun-alun itu. 913 00:47:52,980 --> 00:47:56,460 >> Jadi seluruh tujuan penutupan tersebut hanya semacam merangkum fakta 914 00:47:56,460 --> 00:47:59,920 bahwa saya selalu ingin menggunakan y kapanpun Saya memanggil fungsi itu sebagai kekuatan 915 00:47:59,920 --> 00:48:01,710 saat mengambil eksponen ini. 916 00:48:01,710 --> 00:48:04,650 Jadi kembali kemudian, sebuah fungsi yang menerima 917 00:48:04,650 --> 00:48:08,460 ganda, yang merupakan dasar, dan mengembalikan hasil eksponen yang 918 00:48:08,460 --> 00:48:10,740 adalah kunci di sini. 919 00:48:10,740 --> 00:48:12,790 Dan itulah perbedaan utama. 920 00:48:12,790 --> 00:48:14,430 Hanya ada sedikit penuh gaya. 921 00:48:14,430 --> 00:48:17,970 >> Hal ini tidak berbeda dibandingkan dengan contoh sebelumnya, 922 00:48:17,970 --> 00:48:20,530 tapi itu hanya sedikit a berkembang kita bisa benar-benar 923 00:48:20,530 --> 00:48:24,500 membuat operator di Swift dan benar-benar melakukan hal-hal dengan itu, 924 00:48:24,500 --> 00:48:26,396 yang merupakan jenis hal yang keren. 925 00:48:26,396 --> 00:48:27,520 Apakah saya menjawab pertanyaan Anda? 926 00:48:27,520 --> 00:48:28,390 Manis. 927 00:48:28,390 --> 00:48:31,350 Ada lagi sebelum kita melanjutkan? 928 00:48:31,350 --> 00:48:33,570 OKE. 929 00:48:33,570 --> 00:48:36,430 >> Sekarang ini semacam menimbulkan yang dimaksud adalah itu-- juga OK, 930 00:48:36,430 --> 00:48:40,870 sekarang kami memiliki kemampuan untuk fungsi yang harus dikembalikan. 931 00:48:40,870 --> 00:48:48,950 Bisakah kita juga melewati fungsi sebagai data atau sebagai parameter untuk fungsi lain? 932 00:48:48,950 --> 00:48:50,710 Dan sebenarnya kita bisa. 933 00:48:50,710 --> 00:48:53,480 Jadi mari kita mengatakan bahwa kita memiliki semua kode yang sama. 934 00:48:53,480 --> 00:48:56,120 Kami memiliki variabel persegi yang akan persegi kode ini. 935 00:48:56,120 --> 00:48:59,320 Dan kami memiliki variabel kubus yang akan kubus beberapa data. 936 00:48:59,320 --> 00:49:02,440 Dan kita benar-benar ingin menerapkan untuk berbagai angka. 937 00:49:02,440 --> 00:49:06,870 >> Jadi apa yang kita mungkin tergoda untuk melakukan, Tentu saja, yang tentunya berlaku, 938 00:49:06,870 --> 00:49:15,430 adalah untuk iterate atas daftar ini nomor dan menerapkan fungsi saya persegi dan kubus 939 00:49:15,430 --> 00:49:22,270 dan mendapatkan dua daftar baru hasil yang daftar ini asli kuadrat 940 00:49:22,270 --> 00:49:24,970 dan potong dadu, masing-masing. 941 00:49:24,970 --> 00:49:26,880 Benar-benar diterima. 942 00:49:26,880 --> 00:49:29,130 Tapi apa hal yang kita lihat di sini adalah bahwa kita memiliki, 943 00:49:29,130 --> 00:49:31,310 lagi, duplikasi kode kita. 944 00:49:31,310 --> 00:49:34,310 Dan ada mungkin kesempatan bagi kita untuk menyederhanakan ini sedikit. 945 00:49:34,310 --> 00:49:41,260 Bagaimana jika ada cara bagi kita untuk sebenarnya selalu iterate atas beberapa daftar 946 00:49:41,260 --> 00:49:45,450 dan hanya lolos ke ajaib fungsi variabel yang 947 00:49:45,450 --> 00:49:47,350 merupakan fungsi bahwa kita ingin menerapkan 948 00:49:47,350 --> 00:49:50,336 untuk setiap produk dalam daftar ini. 949 00:49:50,336 --> 00:49:53,210 Ini membawa pada konsep apa disebut fungsi orde tinggi. 950 00:49:53,210 --> 00:49:57,150 Dan pada dasarnya itulah yang ini adalah, adalah bahwa kita dapat membuat fungsi. 951 00:49:57,150 --> 00:50:00,210 >> Dan dalam hal ini yang disebut mapper, hanya untuk memberikan nama, hanya 952 00:50:00,210 --> 00:50:02,510 pemetaan atas setiap item tunggal dalam daftar. 953 00:50:02,510 --> 00:50:06,191 Di mana saya mengambil daftar dan saya mengambil fungsi. 954 00:50:06,191 --> 00:50:08,440 Dan fungsi yang, tentu saja, memiliki tanda tangan tertentu. 955 00:50:08,440 --> 00:50:11,980 Ia menerima sebagai parameter ganda dan itu akan menampilkan adalah ganda. 956 00:50:11,980 --> 00:50:14,310 Dan seluruh hasil Fungsi ini akan 957 00:50:14,310 --> 00:50:18,921 menjadi daftar baru yang bertipe double. 958 00:50:18,921 --> 00:50:19,420 OKE? 959 00:50:19,420 --> 00:50:22,650 >> Dan apa yang akan saya lakukan adalah untuk menerapkan fungsi ini f 960 00:50:22,650 --> 00:50:24,960 untuk setiap elemen dalam daftar saya. 961 00:50:24,960 --> 00:50:30,280 Dan reply-- dan agak kembali ini baru daftar sebagai hasil, yang benar-benar keren. 962 00:50:30,280 --> 00:50:31,820 Sekarang saya bisa melewati fungsi sekitar. 963 00:50:31,820 --> 00:50:35,290 Dan ide ini tatanan yang lebih tinggi fungsi benar-benar penting. 964 00:50:35,290 --> 00:50:39,260 Dan mapper ini benar-benar hanya Pelaksanaan orang miskin 965 00:50:39,260 --> 00:50:43,130 dari fungsi yang dibangun ke Swift disebut peta. 966 00:50:43,130 --> 00:50:45,690 Dan itu justru ini, bahkan mungkin sedikit lebih baik. 967 00:50:45,690 --> 00:50:48,260 >> Ini hanya semacam generik, versi sederhana yang 968 00:50:48,260 --> 00:50:51,270 memungkinkan kita untuk melihat Konsep yang berlaku di sini. 969 00:50:51,270 --> 00:50:54,630 Sekarang melihat cara yang saya benar-benar dapat menerapkan persegi saya 970 00:50:54,630 --> 00:50:57,850 dan fungsi kubus untuk ini daftar nomor. 971 00:50:57,850 --> 00:50:58,780 Saya menjalankan mapper saya. 972 00:50:58,780 --> 00:51:00,280 Saya berikan itu saya daftar nomor. 973 00:51:00,280 --> 00:51:02,155 Saya berikan untuk itu yang fungsi yang akan 974 00:51:02,155 --> 00:51:04,170 berlaku untuk masing-masing indeks. 975 00:51:04,170 --> 00:51:07,120 Dan itu akan menjadi output hasilnya. 976 00:51:07,120 --> 00:51:11,810 Dan aku akan bisa melihat bahwa saya telah kuadrat dan potong dadu nomor saya sebagai hasilnya. 977 00:51:11,810 --> 00:51:14,660 >> Dan tentu saja mapper akan mengambil apapun fungsi anonim. 978 00:51:14,660 --> 00:51:17,640 Kita bahkan bisa melihat bahwa saya buat fungsi anonim baru yang 979 00:51:17,640 --> 00:51:20,220 hanya membutuhkan beberapa parameter dan membaginya dengan 2. 980 00:51:20,220 --> 00:51:24,340 Dan kita bisa melihat bahwa saya sudah, pada kenyataannya, dibagi daftar saya dengan 2 sebaliknya. 981 00:51:24,340 --> 00:51:25,250 Keren? 982 00:51:25,250 --> 00:51:27,340 Sejauh ini, begitu baik? 983 00:51:27,340 --> 00:51:29,650 Baiklah, sekarang mari kita kembali ke ide ini. 984 00:51:29,650 --> 00:51:36,160 Mari kita menerapkan ini kembali di konteks gradebook a. 985 00:51:36,160 --> 00:51:41,860 >> Dan jika saya melakukan itu, kita dapat melihat bahwa saya bisa menerapkan berbagai options-- ini 986 00:51:41,860 --> 00:51:44,330 atau berbagai ini fungsi orde tinggi 987 00:51:44,330 --> 00:51:51,450 untuk benar-benar menyederhanakan kemampuan saya untuk melakukan berbagai hal dalam daftar nomor. 988 00:51:51,450 --> 00:51:53,660 Jadi misalnya, jika saya mengambil daftar nomor, 989 00:51:53,660 --> 00:51:57,060 salah satu fungsi orde tinggi yang ada disebut mengurangi. 990 00:51:57,060 --> 00:52:00,080 Apa mengurangi tidak lebih dari peta, berkurang akan 991 00:52:00,080 --> 00:52:03,710 mengambil dua unsur dalam daftar, akan mengambil beberapa fungsi yang 992 00:52:03,710 --> 00:52:07,420 membandingkan dua elemen daftar, dan kemudian akan 993 00:52:07,420 --> 00:52:09,610 semacam output-- yang output fungsi yang 994 00:52:09,610 --> 00:52:13,790 akan unsur lain yang Anda kemudian dibandingkan dengan orang lain. 995 00:52:13,790 --> 00:52:18,190 >> Jadi, Anda bisa menggunakan ini untuk benar-benar jumlah angka dalam daftar Anda. 996 00:52:18,190 --> 00:52:20,640 Sebagai contoh, jika Anda memiliki daftar 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 Anda mengambil elemen pertama, 1 dan 2. 998 00:52:22,940 --> 00:52:27,270 Anda dapat mengajukan permohonan untuk itu tambahan fungsi yang mengambil dua elemen 999 00:52:27,270 --> 00:52:30,980 dan meludah keluar salah satu elemen, yang akan menjadi nilai 3. 1000 00:52:30,980 --> 00:52:35,684 Kemudian kita mengambil nilai yang 3 dengan berikutnya unsur daftar, jumlah kedua, 1001 00:52:35,684 --> 00:52:37,100 dan kemudian terus ke bawah daftar. 1002 00:52:37,100 --> 00:52:40,410 >> Kami mengurangi daftar ke nilai tunggal. 1003 00:52:40,410 --> 00:52:42,700 Dan kebetulan bahwa simbol ditambah 1004 00:52:42,700 --> 00:52:44,670 adalah operator, seperti yang kita hanya melihat. 1005 00:52:44,670 --> 00:52:47,500 Operator ini sebenarnya fungsi yang 1006 00:52:47,500 --> 00:52:53,100 memiliki tepatnya daftar ini yang kita ingin, bukan sifat ini 1007 00:52:53,100 --> 00:52:54,770 yang kita inginkan. 1008 00:52:54,770 --> 00:52:56,760 Jadi saya mendorong Anda untuk lihatlah ini. 1009 00:52:56,760 --> 00:52:59,290 Saya ingin menyortir bergerak pada dari beberapa kode ini 1010 00:52:59,290 --> 00:53:05,330 sehingga kita benar-benar dapat melihat beberapa aktual, nyata, Swift benar di Xcode, 1011 00:53:05,330 --> 00:53:06,880 dalam pengembangan iOS. 1012 00:53:06,880 --> 00:53:08,630 Tapi lihatlah ini dan lihat apakah Anda bisa 1013 00:53:08,630 --> 00:53:11,171 mengurai melalui apa yang terjadi dengan beberapa dari tatanan yang lebih tinggi 1014 00:53:11,171 --> 00:53:13,790 fungsi termasuk filter, mengurangi, dan Anda akan lebih 1015 00:53:13,790 --> 00:53:17,060 lihat di suatu tempat di sini peta juga. 1016 00:53:17,060 --> 00:53:17,910 Ada di sini. 1017 00:53:17,910 --> 00:53:20,410 Di mana ia akan mengambil urutan nilai dan itu akan benar-benar 1018 00:53:20,410 --> 00:53:24,230 peta mereka menggunakan saklar membangun, yang mungkin Anda mengenali dari C, 1019 00:53:24,230 --> 00:53:27,640 namun sebenarnya lebih banyak kuat dari saklar membangun 1020 00:53:27,640 --> 00:53:29,810 yang kita miliki di C. 1021 00:53:29,810 --> 00:53:31,930 >> Dan kita akan menerapkan bahwa untuk setiap elemen dalam daftar 1022 00:53:31,930 --> 00:53:34,540 dan benar-benar memberikan huruf kelas masing-masing 1023 00:53:34,540 --> 00:53:40,780 mereka nilai menggunakan semua konsep-konsep ini bahwa kita baru saja bicarakan sebelumnya. 1024 00:53:40,780 --> 00:53:44,760 Sekarang mari kita menghindari untuk hanya menit dan berbicara tentang struct. 1025 00:53:44,760 --> 00:53:49,680 Dan struct adalah menunggu di C yang kita mampu menentukan jenis baru data. 1026 00:53:49,680 --> 00:53:53,590 Structs ada dalam Swift. 1027 00:53:53,590 --> 00:53:58,980 Demikian banyak konstruksi lainnya disebut enum dan kelas, yang benar-benar 1028 00:53:58,980 --> 00:54:01,175 mengambil ide ini ke Seluruh tingkat yang berbeda. 1029 00:54:01,175 --> 00:54:05,300 >> Dan pada dasarnya itu hanya cara mendefinisikan tipe data baru. 1030 00:54:05,300 --> 00:54:11,010 Jadi, jika Anda get-- jika Anda datang di kelas atau struct atau enum, 1031 00:54:11,010 --> 00:54:13,290 jangan bingung olehnya. 1032 00:54:13,290 --> 00:54:16,280 Ini hanya cara mendefinisikan beberapa jenis tertentu data baru. 1033 00:54:16,280 --> 00:54:20,230 Dan ini benar-benar penting ketika kita berbicara tentang pengembangan aplikasi iOS 1034 00:54:20,230 --> 00:54:24,630 karena segala sesuatu yang ada dalam aplikasi iOS 1035 00:54:24,630 --> 00:54:27,460 pada dasarnya obyek dari beberapa jenis. 1036 00:54:27,460 --> 00:54:31,980 Dan objek pada dasarnya adalah kelas atau enum atau struct. 1037 00:54:31,980 --> 00:54:34,760 >> Jadi dalam hal ini saya mendefinisikan tipe data baru 1038 00:54:34,760 --> 00:54:37,740 bahwa aku menelepon penilaian itu beberapa properti, termasuk 1039 00:54:37,740 --> 00:54:41,040 nama dan urutan nilai. 1040 00:54:41,040 --> 00:54:43,470 Jadi salah satu jenis penilaian bahwa aku mungkin ada dalam pikiran 1041 00:54:43,470 --> 00:54:44,760 akan kuis, misalnya. 1042 00:54:44,760 --> 00:54:48,180 Saya ingin memiliki Penilaian itu kuis 1043 00:54:48,180 --> 00:54:51,460 dan yang memiliki berbagai nilai terkait dengan itu, untuk kuis satu, 1044 00:54:51,460 --> 00:54:52,840 kuis dua, seterusnya dan sebagainya. 1045 00:54:52,840 --> 00:54:55,720 >> Atau aku mungkin memiliki jenis yang berbeda penilaian untuk masalah set. 1046 00:54:55,720 --> 00:54:56,650 Dan aku bisa melakukan hal-hal. 1047 00:54:56,650 --> 00:54:59,860 Aku benar-benar dapat memiliki fungsi dalam jenis ini 1048 00:54:59,860 --> 00:55:02,645 data, yang sekarang disebut metode. 1049 00:55:02,645 --> 00:55:04,520 Jadi, jika Anda pernah melihat Metode kata, itu benar-benar 1050 00:55:04,520 --> 00:55:08,190 hanya fungsi yang berlaku untuk kelas yang sangat spesifik, 1051 00:55:08,190 --> 00:55:10,100 atau jenis yang sangat spesifik data. 1052 00:55:10,100 --> 00:55:12,350 Hal ini memungkinkan kita untuk memodifikasi data dalam. 1053 00:55:12,350 --> 00:55:15,510 >> Jadi dengan kata lain, jika saya ingin menambahkan kelas untuk penilaian saya, 1054 00:55:15,510 --> 00:55:18,630 maka semua harus saya lakukan adalah untuk menambahkan nilai yang masukan 1055 00:55:18,630 --> 00:55:22,660 untuk fungsi ini untuk Properti internal saya. 1056 00:55:22,660 --> 00:55:25,880 Ada membangun lagi rapi di sini di Swift, yang merupakan titik ini dot dot 1057 00:55:25,880 --> 00:55:31,780 operator, yang berarti bahwa nilai dapat sekarang menerima sejumlah bilangan bulat. 1058 00:55:31,780 --> 00:55:33,940 Dan skor akan menjadi array bilangan bulat yang 1059 00:55:33,940 --> 00:55:39,030 telah dilewatkan ke fungsi saya, yang berarti bahwa saya bisa melakukan hal-hal seperti ini. 1060 00:55:39,030 --> 00:55:42,360 >> Aku bisa melakukan menambahkan nilai dan hanya menyediakan nomor sewenang-wenang bilangan bulat ke dalamnya 1061 00:55:42,360 --> 00:55:47,420 dan benar-benar diberikan array dari nilai-nilai dalam fungsi saya 1062 00:55:47,420 --> 00:55:50,270 atau dalam metode saya, seperti yang terjadi. 1063 00:55:50,270 --> 00:55:54,040 Sekarang ini penting karena segala sesuatu di Xcode, segala sesuatu di iOS, 1064 00:55:54,040 --> 00:55:56,250 sebenarnya obyek. 1065 00:55:56,250 --> 00:55:59,630 Jadi ingat-ingat ketika kita bust Xcode terbuka 1066 00:55:59,630 --> 00:56:04,890 dan langsung beralih melampaui iOS versi dua dan tiga 1067 00:56:04,890 --> 00:56:08,820 dan benar-benar pergi ke versi empat. 1068 00:56:08,820 --> 00:56:11,940 >> Dan lagi, semua ini akan diposting pada halaman seminar. 1069 00:56:11,940 --> 00:56:16,980 iOS empat adalah semacam penuh sesak nafas pelaksanaan aplikasi yang sangat dasar. 1070 00:56:16,980 --> 00:56:23,920 Dan apa aplikasi ini dilakukan adalah beban UI, yang terlihat seperti ini. 1071 00:56:23,920 --> 00:56:28,680 Sekali lagi, jika kita klik pada storyboard kita bisa melihat bahwa ini adalah apa yang tampak seperti. 1072 00:56:28,680 --> 00:56:31,320 Ini adalah UI. 1073 00:56:31,320 --> 00:56:33,676 Memiliki gelar di bagian paling atas. 1074 00:56:33,676 --> 00:56:34,800 Saya sudah menyebutnya galeri web. 1075 00:56:34,800 --> 00:56:38,400 >> Di tengah ada unsur disebut tampilan gambar UI. 1076 00:56:38,400 --> 00:56:41,340 Dan di bagian bawah ada toolbar dengan tombol yang 1077 00:56:41,340 --> 00:56:46,850 memiliki ruang elastis yang memungkinkan untuk pusat di tengah toolbar ini. 1078 00:56:46,850 --> 00:56:51,780 Dan apa yang terjadi adalah bahwa ketika ini beban mendownload file JSON yang 1079 00:56:51,780 --> 00:56:55,540 yang terdapat pada server di tempat lain, mengurai file JSON, 1080 00:56:55,540 --> 00:56:58,130 dan file JSON terlihat sedikit seperti ini. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 JSON file terlihat seperti ini. 1083 00:57:06,230 --> 00:57:08,650 Itu ada. 1084 00:57:08,650 --> 00:57:11,730 >> Ini memiliki nama album dan memiliki array foto. 1085 00:57:11,730 --> 00:57:13,490 Masing-masing foto memiliki nama dan juga 1086 00:57:13,490 --> 00:57:19,460 URL sendiri yang mewakili Versi jpeg itu foto pribadi. 1087 00:57:19,460 --> 00:57:24,780 Jadi apa yang terjadi adalah bahwa ketika program ini beban, itu download file JSON, 1088 00:57:24,780 --> 00:57:30,590 mem-parsing itu, menempatkan semua ini menjadi setara dengan sebuah array di iOS 1089 00:57:30,590 --> 00:57:33,020 pengembangan aplikasi, yang merupakan NSArray. 1090 00:57:33,020 --> 00:57:37,520 Dan kemudian saya kemudian dapat memuat Data ini menjadi sebuah aplikasi 1091 00:57:37,520 --> 00:57:41,100 dan beban di layar saya. 1092 00:57:41,100 --> 00:57:44,760 >> Ada gambar yang dimuat dengan tombol di bagian paling bawah. 1093 00:57:44,760 --> 00:57:49,190 Jika saya klik Get Gambar Berikutnya, kemudian menarik gambar yang dari internet 1094 00:57:49,190 --> 00:57:53,370 dan menggantikan gambar yang dalam tampilan gambar UI. 1095 00:57:53,370 --> 00:57:57,820 Jadi Anda dapat men-download ini dan benar-benar kita lihat pada komputer Anda. 1096 00:57:57,820 --> 00:58:00,940 Dan membangun dan benar-benar compile ke perangkat Anda. 1097 00:58:00,940 --> 00:58:04,710 Tapi pada dasarnya proses itu ini, membuat storyboard-- yang 1098 00:58:04,710 --> 00:58:08,080 atau lebih tepatnya tidak create-- tapi pilih storyboard. 1099 00:58:08,080 --> 00:58:15,030 Dan sebenarnya we'll-- jika Anda tidak mind-- kita akan mengambil hanya beberapa detik 1100 00:58:15,030 --> 00:58:18,390 untuk benar-benar menunjukkan cara ini dilakukan. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Hanya sehingga bagaimana kita bisa benar-benar mencapai hal ini dibuat sedikit lebih 1103 00:58:27,820 --> 00:58:28,360 jelas. 1104 00:58:28,360 --> 00:58:30,651 Tunggal tampilan aplikasi, aku akan memanggil seminar ini 1105 00:58:30,651 --> 00:58:35,330 empat mewakili ini nomor tertentu. 1106 00:58:35,330 --> 00:58:36,335 Simpan di desktop. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, akan klik pada storyboard. 1109 00:58:42,110 --> 00:58:47,030 Dan apa yang akan saya lakukan adalah untuk menemukan tampilan gambar saya, 1110 00:58:47,030 --> 00:58:50,940 drag ke pengguna saya interface dan pusat itu. 1111 00:58:50,940 --> 00:58:54,850 Sekarang hanya berpusat sayangnya tidak akan melakukan banyak, 1112 00:58:54,850 --> 00:58:58,680 kecuali untuk layar yaitu ukuran yang tepat ini. 1113 00:58:58,680 --> 00:59:03,950 >> Jadi kita bisa meyakinkan diri kita bahwa dengan mengklik ini hal lingkaran ganda, 1114 00:59:03,950 --> 00:59:08,290 menjatuhkan pop ini up menu di sini dan mengubah 1115 00:59:08,290 --> 00:59:11,110 untuk melihat, di mana kita akan benar-benar mendapatkan kesempatan untuk melihat bagaimana 1116 00:59:11,110 --> 00:59:13,530 ini akan benar-benar terlihat pada perangkat lain. 1117 00:59:13,530 --> 00:59:16,500 Seperti yang kita lihat, kita bahkan tidak melihatnya di kasus ini. 1118 00:59:16,500 --> 00:59:18,500 Jadi aku akan menutup ini untuk saat ini. 1119 00:59:18,500 --> 00:59:22,100 >> Dan aku akan memilih icon ini turun di bagian paling 1120 00:59:22,100 --> 00:59:23,910 Bagian bawah layar. 1121 00:59:23,910 --> 00:59:26,584 Dikatakan Selesaikan Auto Tata Letak Isu. 1122 00:59:26,584 --> 00:59:28,000 Maaf, itu dipotong di bagian bawah. 1123 00:59:28,000 --> 00:59:36,360 Tapi kalau saya klik pada itu, apa yang saya dapatkan adalah pop ini up-- pergi. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Apa yang saya dapatkan adalah pop up ini yang memungkinkan saya untuk menambahkan kendala yang hilang. 1126 00:59:51,220 --> 00:59:53,780 Dan dengan melakukan itu kemudian semacam menguncinya 1127 00:59:53,780 --> 00:59:56,640 ke bagian tengah layar seperti saya harapkan. 1128 00:59:56,640 --> 01:00:00,520 >> Sekarang untuk mendapatkan tombol ini pada atasnya, saya harus pergi ke Editor. 1129 01:00:00,520 --> 01:00:05,010 Pergi ke Embed Dalam dan klik Navigasi Controller. 1130 01:00:05,010 --> 01:00:08,900 Apa yang akan Anda lakukan adalah yang akan menambah Seluruh komponen ini lain untuk itu, 1131 01:00:08,900 --> 01:00:11,310 tapi itu benar-benar akan menghubungkan kembali ke UI asli saya. 1132 01:00:11,310 --> 01:00:14,450 Dan rincian, sekali lagi, kita tidak benar-benar perlu peduli sekarang. 1133 01:00:14,450 --> 01:00:16,710 Tapi aku ingin memiliki toolbar di bagian paling bawah. 1134 01:00:16,710 --> 01:00:18,530 Jadi saya akan memeriksa Shows Toolbar. 1135 01:00:18,530 --> 01:00:21,870 >> Dan ini memberikan dalam pandangan saya, yang sekarang di tempat lain, 1136 01:00:21,870 --> 01:00:23,900 kita bisa melihat itu terkait di sini. 1137 01:00:23,900 --> 01:00:28,710 Saat ini telah menyediakan toolbar di bagian bawah UI. 1138 01:00:28,710 --> 01:00:34,770 Jadi sekarang, daripada memilih lihat gambar, saya dapat menemukan label, 1139 01:00:34,770 --> 01:00:41,140 atau lebih tepatnya toolbar-- sebuah mari kita lihat, di mana itu? 1140 01:00:41,140 --> 01:00:41,890 Apa itu namanya? 1141 01:00:41,890 --> 01:00:49,760 Item button-- bar-- item-- sorry-- bar tombol item. 1142 01:00:49,760 --> 01:00:54,590 Celepuk yang ada dan menerapkan beberapa ruang yang fleksibel di kedua sisi 1143 01:00:54,590 --> 01:00:57,429 untuk benar-benar pusat itu. 1144 01:00:57,429 --> 01:00:58,970 Jadi sekarang saya telah membuat UI saya, pada dasarnya. 1145 01:00:58,970 --> 01:01:01,428 Dan saya bisa memberikan nama dengan mengklik ganda di bagian paling atas 1146 01:01:01,428 --> 01:01:04,880 di sini dan mengatakan galeri web dan sebagainya. 1147 01:01:04,880 --> 01:01:08,100 Sekarang lagi, ini adalah elemen yang ada dengan sendirinya. 1148 01:01:08,100 --> 01:01:10,400 Dan saya harus menghubungkan mereka untuk kode saya yang 1149 01:01:10,400 --> 01:01:14,297 Saya bisa lakukan dengan membawa lagi up ini ikon lingkaran ganda, 1150 01:01:14,297 --> 01:01:15,380 berubah dari preview. 1151 01:01:15,380 --> 01:01:18,950 Yang, by the way, sekarang kita bisa lihat adalah baik terpusat dan akan terlihat baik 1152 01:01:18,950 --> 01:01:23,720 pada berbagai perangkat. 1153 01:01:23,720 --> 01:01:27,280 >> Beralih ke otomatis, yang akan membuka kode ViewController. 1154 01:01:27,280 --> 01:01:29,030 Dan sekarang bagian ini penting. 1155 01:01:29,030 --> 01:01:34,590 Agar Anda untuk menghubungkan ini dua elemen, kode Anda ke UI, 1156 01:01:34,590 --> 01:01:36,680 Anda memilih item yang Anda ingin menghubungkan. 1157 01:01:36,680 --> 01:01:39,570 Jadi dalam hal ini, kita benar-benar ingin untuk mengkodekan 1158 01:01:39,570 --> 01:01:43,520 mengubah gambar yang terkandung dalam hal ini tampilan gambar UI. 1159 01:01:43,520 --> 01:01:47,070 Jadi jika Anda mengontrol klik dari tampilan gambar dan drag, 1160 01:01:47,070 --> 01:01:51,960 Anda akan melihat bahwa Anda mendapatkan sebuah bar kecil, ketika Anda melepaskan semua pop ini 1161 01:01:51,960 --> 01:01:53,550 up akan terjadi. 1162 01:01:53,550 --> 01:01:56,470 >> Dan ia mengatakan bahwa kita akan membuat sambungan. 1163 01:01:56,470 --> 01:01:59,300 Dan dari sini saya ingin memberikan nama, seperti galeri. 1164 01:01:59,300 --> 01:02:00,240 Tekan Enter. 1165 01:02:00,240 --> 01:02:03,040 Dan ini benar-benar menyediakan variabel yang disebut galeri 1166 01:02:03,040 --> 01:02:08,600 bahwa saya kemudian dapat referensi dalam kode saya untuk mengubah gambar, misalnya. 1167 01:02:08,600 --> 01:02:10,430 Jadi bagaimana kode yang benar-benar melihat? 1168 01:02:10,430 --> 01:02:13,030 Nah lagi, saya tidak ingin menghabiskan terlalu banyak waktu di atasnya. 1169 01:02:13,030 --> 01:02:15,430 Dan saya mendorong Anda untuk men-download dan melihat. 1170 01:02:15,430 --> 01:02:18,330 Tapi salah satu yang paling Aspek penting adalah kode 1171 01:02:18,330 --> 01:02:20,980 yang benar-benar menjemput gambar. 1172 01:02:20,980 --> 01:02:26,470 >> Jadi dalam hal ini saya ingin untuk mendapatkan dalam foto saya 1173 01:02:26,470 --> 01:02:28,520 array, yang terkandung dalam kelas saya. 1174 01:02:28,520 --> 01:02:33,390 Saya ingin menentukan nama dan URL yang telah dipecah dari JSON ini. 1175 01:02:33,390 --> 01:02:39,810 Benar-benar meminta perangkat untuk mendapatkan URL, untuk mengambil URL dari ini, 1176 01:02:39,810 --> 01:02:44,060 dan kemudian mengambil data dari isi URL itu. 1177 01:02:44,060 --> 01:02:49,430 Kemudian mengkonversi data menjadi gambar dengan melewatkan ke gambar UI. 1178 01:02:49,430 --> 01:02:52,880 Jadi sekali lagi, ini adalah jenis semua berbeda benda, berbagai jenis kelas. 1179 01:02:52,880 --> 01:02:58,410 >> Dan kemudian saya kemudian dapat mengatur saya gallery.image sama dengan data tersebut. 1180 01:02:58,410 --> 01:03:00,750 Dan itu semacam daging itu yang benar-benar kemudian 1181 01:03:00,750 --> 01:03:08,250 mampu mengubah data from-- perubahan gambar dari satu ke yang berikutnya. 1182 01:03:08,250 --> 01:03:10,660 Jadi sekali lagi, mudah-mudahan sekarang banyak konstruksi 1183 01:03:10,660 --> 01:03:12,240 akan membuat sedikit lebih masuk akal. 1184 01:03:12,240 --> 01:03:15,260 Perhatikan bahwa ada beberapa tanda seru di sini. 1185 01:03:15,260 --> 01:03:19,810 Poin seru yang dasarnya terkait dengan optionals. 1186 01:03:19,810 --> 01:03:22,657 >> Apa yang saya katakan adalah pada dasarnya bahwa tanpa memeriksa 1187 01:03:22,657 --> 01:03:24,490 untuk melihat apakah ada data yang dalam hal ini opsional, 1188 01:03:24,490 --> 01:03:27,140 Aku akan pergi ke depan dan menganggap bahwa ada dan membukanya. 1189 01:03:27,140 --> 01:03:31,340 Ingat bahwa kita menggunakan analogi semacam paket untuk optionals 1190 01:03:31,340 --> 01:03:34,700 dan kita perlu membukanya dengan paket dan menarik data keluar. 1191 01:03:34,700 --> 01:03:37,570 Tanda seru kekuatan yang benar-benar terjadi. 1192 01:03:37,570 --> 01:03:39,590 >> Tapi aku tahu bahwa ini adalah aman karena saya diperiksa 1193 01:03:39,590 --> 01:03:42,070 untuk melihat apakah data gambar sama nil, saya sudah benar-benar memeriksa 1194 01:03:42,070 --> 01:03:45,420 untuk melihat apakah yang opsional adalah, pada kenyataannya, gagal. 1195 01:03:45,420 --> 01:03:47,110 Jika itu telah, pada kenyataannya, gagal sudah. 1196 01:03:47,110 --> 01:03:52,450 Dan aku yakin bahwa sekali saya mendapatkan ini titik aku bisa membuka bungkusan data tersebut. 1197 01:03:52,450 --> 01:03:55,710 Anda juga bisa melihat dalam bentuk tanda tanya. 1198 01:03:55,710 --> 01:03:59,100 Jadi jika kita gulir ke bawah ke tempat saya harus benar-benar mengurai data. 1199 01:03:59,100 --> 01:04:01,850 >> Jadi jangan menunda oleh semacam ini nama-nama yang panjang. 1200 01:04:01,850 --> 01:04:06,580 Anda dapat menemukan di Apple Situs pengembang banyak 1201 01:04:06,580 --> 01:04:09,620 referensi untuk semua objek dan semua proses 1202 01:04:09,620 --> 01:04:11,170 yang benar-benar membuat ini mungkin. 1203 01:04:11,170 --> 01:04:15,990 Tapi perhatikan bahwa ini pada dasarnya fungsi di mana saya lulus beberapa data. 1204 01:04:15,990 --> 01:04:18,410 Dan aku kembali beberapa jenis data. 1205 01:04:18,410 --> 01:04:24,190 Dan saya harus menggunakan ini sebagai kata kunci untuk mengubahnya menjadi NSDictionary ini? 1206 01:04:24,190 --> 01:04:26,490 Yang lagi, sebuah NSDictionary opsional. 1207 01:04:26,490 --> 01:04:31,070 Yang kemudian perlu memeriksa untuk melihat apakah itu ada. 1208 01:04:31,070 --> 01:04:37,130 >> Jadi saya bisa menggunakannya jika membiarkan equals sukses diurai, 1209 01:04:37,130 --> 01:04:40,620 maka saya tahu bahwa itu opsional sebenarnya mengandung beberapa data. 1210 01:04:40,620 --> 01:04:43,840 Atau apa yang saya lakukan di sini adalah untuk hanya berasumsi bahwa jika ada 1211 01:04:43,840 --> 01:04:49,067 tidak ada kesalahan yang sebenarnya aman. 1212 01:04:49,067 --> 01:04:51,400 Baiklah, saya ingin berterima kasih Anda semua sangat banyak untuk datang. 1213 01:04:51,400 --> 01:04:53,540 Saya tahu ini adalah banyak, tapi itu hanya satu jam 1214 01:04:53,540 --> 01:04:55,920 untuk berbicara tentang beberapa hal yang cukup canggih. 1215 01:04:55,920 --> 01:04:59,640 Dan mudah-mudahan Anda akan mendapatkan kesempatan untuk men-download semua kode 1216 01:04:59,640 --> 01:05:01,657 dan mengambil yang lebih baik, lebih melihat secara menyeluruh di dalamnya. 1217 01:05:01,657 --> 01:05:04,240 Semacam meyakinkan diri sendiri dari semua dari hal-hal yang terjadi. 1218 01:05:04,240 --> 01:05:06,800 Dan saya ingin mengucapkan terima kasih semua, sekali lagi, untuk datang. 1219 01:05:06,800 --> 01:05:08,760 Dan semoga sukses dengan proyek akhir Anda. 1220 01:05:08,760 --> 01:05:10,600 Semoga hari Anda menyenangkan. 1221 01:05:10,600 --> 01:05:11,467