1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL Armendáriz: Всем привет, Добро пожаловать в развитие IOS приложения 3 00:00:14,340 --> 00:00:15,020 с SWIFT. 4 00:00:15,020 --> 00:00:15,870 Я Дэн Armendariz. 5 00:00:15,870 --> 00:00:18,920 Я precepter компьютера наука здесь в школе 6 00:00:18,920 --> 00:00:21,200 инженерных и прикладных наук. 7 00:00:21,200 --> 00:00:24,310 И Свифт на самом деле вид из действительно аккуратный языке. 8 00:00:24,310 --> 00:00:27,190 И у меня есть некоторые планы на сегодняшний день. 9 00:00:27,190 --> 00:00:31,430 Так в течение следующего часа или таким образом мы собираемся посмотреть на само развитие IOS приложения 10 00:00:31,430 --> 00:00:36,640 с помощью Xcode и фактически создавая некоторые очень простой, очень простые приложения. 11 00:00:36,640 --> 00:00:40,070 И, глядя на том, как вы на самом деле принять эти приложения, 12 00:00:40,070 --> 00:00:42,887 и строить их, а на самом деле положить их на устройстве IOS. 13 00:00:42,887 --> 00:00:44,970 Некоторые из вещей, которые мы не будем смотреть на 14 00:00:44,970 --> 00:00:47,540 будет включать в себя такие вещи, как на самом деле принимает заявку 15 00:00:47,540 --> 00:00:48,940 и положить его на App Store. 16 00:00:48,940 --> 00:00:52,930 Там это много учебных пособий в Интернете, что поможет вам в этом аспекте его. 17 00:00:52,930 --> 00:00:56,230 Но и потому, что, как часть CS50, вы получите 18 00:00:56,230 --> 00:00:59,780 чтобы присоединиться к развитию компании Apple Команда, команда разработчиков приложения CS50-х годов. 19 00:00:59,780 --> 00:01:02,790 Если вы не сделали, что еще и вы связаны с CS50, 20 00:01:02,790 --> 00:01:04,810 Я рекомендую вам сделать это, потому что это 21 00:01:04,810 --> 00:01:08,820 как вы сможете создать некоторые программы в Xcode, 22 00:01:08,820 --> 00:01:11,890 строить их, а на самом деле положить их на некоторые из ваших IOS устройств 23 00:01:11,890 --> 00:01:14,087 Если у вас действительно есть физическое устройство IOS. 24 00:01:14,087 --> 00:01:16,670 Если у вас нет физического IOS Устройство, которое более чем в порядке. 25 00:01:16,670 --> 00:01:19,810 Вы на самом деле можем разработать для IOS. 26 00:01:19,810 --> 00:01:22,390 И Xcode имеет симулятор, который позволяет 27 00:01:22,390 --> 00:01:26,570 чтобы увидеть вашу заявку в действия на компьютере. 28 00:01:26,570 --> 00:01:30,440 Но он вроде есть приятная вещь на самом деле играть и взаимодействовать 29 00:01:30,440 --> 00:01:34,235 с приложением на реальном устройстве. 30 00:01:34,235 --> 00:01:37,360 Так что пара требований к на самом деле все это развитие. 31 00:01:37,360 --> 00:01:39,151 Один из них является то, что Вы должны иметь Mac. 32 00:01:39,151 --> 00:01:44,770 Он должен быть запущен 10.9.4 или более поздней версии для того, чтобы сделать развитие со стремительным. 33 00:01:44,770 --> 00:01:47,770 >> Вы можете использовать ранее версия для развития 34 00:01:47,770 --> 00:01:50,810 с Objective-C для МО и Mac. 35 00:01:50,810 --> 00:01:53,990 Но я рекомендую, и много Примеры, которые мы видим сегодня, 36 00:01:53,990 --> 00:01:55,700 использовать 10,10 Йосемити. 37 00:01:55,700 --> 00:02:00,910 Так что если вы еще не выполнено, это хороший повод, чтобы сделать это. 38 00:02:00,910 --> 00:02:05,480 Теперь Xcode 6.1 последняя версия интегрированная среда разработки 39 00:02:05,480 --> 00:02:08,979 что компания Apple предоставляет бесплатно, что для Вы можете скачать с магазина приложений. 40 00:02:08,979 --> 00:02:11,220 И я рекомендую вам также запустить последнюю версию. 41 00:02:11,220 --> 00:02:14,700 >> Если вам случится быть запущен раньше версия, Xcode 5 и ниже просто 42 00:02:14,700 --> 00:02:16,741 просто не поддерживают быстрые бы то ни было. 43 00:02:16,741 --> 00:02:19,490 И бета-версии шести, которые были освобождены в течение лета, 44 00:02:19,490 --> 00:02:21,770 поддерживают быстрые, но есть был огромный номер 45 00:02:21,770 --> 00:02:25,220 изменений в языке, достаточно так что код, который вы 46 00:02:25,220 --> 00:02:28,320 будем смотреть на и что вы может найти в Интернете 47 00:02:28,320 --> 00:02:33,294 не может быть скомпилирован правильно в этих предыдущих версиях Xcode. 48 00:02:33,294 --> 00:02:35,460 Итак, еще раз, еще, если вы не есть учетная запись разработчика, 49 00:02:35,460 --> 00:02:38,560 Я рекомендую вам пойти developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Зарегистрироваться создайте учетную запись разработчика, и присоединится к команде разработчиков CS50 приложение. 51 00:02:42,240 --> 00:02:45,530 Это обеспечит вам возможность для компиляции приложений 52 00:02:45,530 --> 00:02:47,840 и положил их на вашем устройстве. 53 00:02:47,840 --> 00:02:49,222 Итак, давайте начнем. 54 00:02:49,222 --> 00:02:50,930 Самое первое, что мы собираемся сделать, это 55 00:02:50,930 --> 00:02:55,140 на самом деле создать очень простой проект в Xcode 56 00:02:55,140 --> 00:02:59,530 что позволит вам подать заявку. 57 00:02:59,530 --> 00:03:03,170 >> Так что если вы еще не имеют Xcode открыт, идти вперед и открыть его 58 00:03:03,170 --> 00:03:04,270 и создать новый проект. 59 00:03:04,270 --> 00:03:06,570 Специальная заставка откроется, и даст вам 60 00:03:06,570 --> 00:03:08,800 некоторые варианты о том, что это то, что вы хотите сделать. 61 00:03:08,800 --> 00:03:12,170 Сразу скажем, что вы хотите создать Новый проект, новое приложение. 62 00:03:12,170 --> 00:03:15,650 Это окно появится, при условии, что вы используете Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Прямо сейчас, и Продолжительность этого семинара, 64 00:03:17,650 --> 00:03:19,990 мы будем использовать одиночные приложения Вид, просто 65 00:03:19,990 --> 00:03:22,590 своего рода базовой заявке чтобы получить ваши ноги мокрые. 66 00:03:22,590 --> 00:03:25,200 И вы можете расшириться по своему усмотрению оттуда. 67 00:03:25,200 --> 00:03:27,660 >> Нажмите кнопку Далее на этом этапе. 68 00:03:27,660 --> 00:03:30,796 Теперь здесь есть несколько вещей, что вы, возможно, захотите, чтобы войти. 69 00:03:30,796 --> 00:03:32,670 Название продукта Имя Вашего проекта. 70 00:03:32,670 --> 00:03:34,859 В этом случае, я просто буду называть его Seminar1 71 00:03:34,859 --> 00:03:36,150 потому что это наш первый пример. 72 00:03:36,150 --> 00:03:38,290 Название организации, в в этом случае это только мое имя. 73 00:03:38,290 --> 00:03:41,760 Вы, конечно, можете изменить его в свое собственное имя, или CS50. 74 00:03:41,760 --> 00:03:46,160 Идентификатор организации, если вас случается, есть веб-сайт, просто взять 75 00:03:46,160 --> 00:03:49,940 Доменное имя реверс, com.yourname. 76 00:03:49,940 --> 00:03:54,200 а затем название продукта должен появиться автоматически 77 00:03:54,200 --> 00:03:55,820 После этого в качестве идентификатора расслоения. 78 00:03:55,820 --> 00:03:59,200 >> Очевидно, язык, который мы собираетесь использовать на сегодняшний день является быстрым. 79 00:03:59,200 --> 00:04:02,590 Можно, конечно, использовать Objective C для этого, но сегодня будет быстрым. 80 00:04:02,590 --> 00:04:04,920 И мы будем сейчас говорить, универсальные устройства, так 81 00:04:04,920 --> 00:04:06,900 что он работает на обоих IPAD и iPhone. 82 00:04:06,900 --> 00:04:10,040 И мы выйдем ядро Данные непроверенные, чтобы сохранить 83 00:04:10,040 --> 00:04:12,830 Проект относительно просто до поры до времени. 84 00:04:12,830 --> 00:04:14,430 Так что давайте идти вперед и нажмите кнопку Далее. 85 00:04:14,430 --> 00:04:16,471 И это будет спрашивать меня где я хочу, чтобы спасти его. 86 00:04:16,471 --> 00:04:19,250 Я просто сохранить его на моем рабочем столе сейчас. 87 00:04:19,250 --> 00:04:22,267 >> Ладно, так что теперь это то, что будет произойдет, когда вы на самом деле открытый Xcode. 88 00:04:22,267 --> 00:04:24,100 И заметьте, что Самое первое, что вы видите 89 00:04:24,100 --> 00:04:28,770 это восклицательный знак, что говорит не личность подписание найден. 90 00:04:28,770 --> 00:04:31,520 Я намеренно сделал это на моем компьютере, и я 91 00:04:31,520 --> 00:04:34,220 надеясь, что я собираюсь быть в состоянии фактически это исправить, 92 00:04:34,220 --> 00:04:37,860 потому что я хочу, чтобы вы, как это действительно будет работать на вашей машине. 93 00:04:37,860 --> 00:04:40,400 >> Идите вперед и нажмите Исправлена ​​проблема. 94 00:04:40,400 --> 00:04:45,400 Она будет просить вас, если у вас есть существующую учетную запись Apple, разработчиков. 95 00:04:45,400 --> 00:04:48,330 Это где присоединение CS50 команда разработчиков приложения 96 00:04:48,330 --> 00:04:51,240 Важно, чтобы вы не только есть приложение счет, 97 00:04:51,240 --> 00:04:53,690 но вы также должны Возможность подписать приложения 98 00:04:53,690 --> 00:04:56,420 и положил их на вашем устройстве IOS. 99 00:04:56,420 --> 00:04:58,957 Это не-- щелчок Исправлена ​​проблема не стоит 100 00:04:58,957 --> 00:05:01,040 Если вы только собираетесь строить и развивать на местном уровне, 101 00:05:01,040 --> 00:05:03,520 полностью в симуляторе IOS. 102 00:05:03,520 --> 00:05:05,820 >> Но сейчас я собираюсь разработать и поставить их 103 00:05:05,820 --> 00:05:08,160 на моем Ipad, который будет возможность транслировать, а также. 104 00:05:08,160 --> 00:05:10,770 Так что я хочу на самом деле добавить это. 105 00:05:10,770 --> 00:05:13,670 И это-то спросит, мне в моем Apple ID. 106 00:05:13,670 --> 00:05:15,700 Так что это будет это. 107 00:05:15,700 --> 00:05:18,940 И у меня есть за моим пароль, который сюда. 108 00:05:18,940 --> 00:05:27,760 Так дайте мне только одну секунду, чтобы найти, что, и скопируйте и вставьте его сюда. 109 00:05:27,760 --> 00:05:28,580 >> Нажмите кнопку Добавить. 110 00:05:28,580 --> 00:05:31,095 Это будет просить меня какая команда Я хочу присоединиться к ней. 111 00:05:31,095 --> 00:05:33,240 Я собираюсь сделать инженерной школе. 112 00:05:33,240 --> 00:05:35,680 Нажмите Играть. 113 00:05:35,680 --> 00:05:37,780 Ой, что это не тот. 114 00:05:37,780 --> 00:05:40,730 Давайте сделаем это. 115 00:05:40,730 --> 00:05:42,060 Надеюсь, что один будет работать. 116 00:05:42,060 --> 00:05:44,220 Это один до сих пор не работает. 117 00:05:44,220 --> 00:05:46,610 Мы бежим из хороших здесь. 118 00:05:46,610 --> 00:05:48,260 ОК, на этот раз должно работать. 119 00:05:48,260 --> 00:05:50,816 Теперь закройте это. 120 00:05:50,816 --> 00:05:54,450 Теперь давайте сделаем школу машиностроение, нажмите выбрать. 121 00:05:54,450 --> 00:06:00,190 >> А теперь, надеюсь, после пару секунд Вы can-- ОК, 122 00:06:00,190 --> 00:06:02,550 Я отозвать и запрос. 123 00:06:02,550 --> 00:06:05,410 О человек, это будет не работают. 124 00:06:05,410 --> 00:06:08,890 Хорошо, я попробую другой. 125 00:06:08,890 --> 00:06:11,167 Давайте сделаем этот здесь. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Живые демки не удается мне. 128 00:06:19,310 --> 00:06:22,540 Мы, возможно, придется вернуться к только что здание, полностью локально, 129 00:06:22,540 --> 00:06:25,050 но это было бы ОК в этом случае. 130 00:06:25,050 --> 00:06:28,560 >> Так вот, в то время как это на самом деле Рабочая, что мы собираемся сделать, это просто 131 00:06:28,560 --> 00:06:31,190 создать очень простой Привет мир приложений. 132 00:06:31,190 --> 00:06:32,340 Так что это Xcode. 133 00:06:32,340 --> 00:06:37,300 И если вы его еще не видел, его может быть немного пугающим на первый взгляд. 134 00:06:37,300 --> 00:06:41,430 Там это много стекла, есть много декораций в различных областях. 135 00:06:41,430 --> 00:06:44,300 Но только понимаю, что есть действительно несколько основных компонентов 136 00:06:44,300 --> 00:06:46,580 в этой среде разработки. 137 00:06:46,580 --> 00:06:51,090 На дальней левой все файлы которые применимы только к вашей программе 138 00:06:51,090 --> 00:06:52,997 или вашего конкретного проекта. 139 00:06:52,997 --> 00:06:55,080 Мы будем нажав вокруг на некоторых из них, и мы 140 00:06:55,080 --> 00:06:57,660 отметить наиболее важные с течением времени. 141 00:06:57,660 --> 00:06:59,650 На крайний справа, мы есть набор атрибутов. 142 00:06:59,650 --> 00:07:02,920 И все эти атрибуты, есть различные стекла для атрибутов. 143 00:07:02,920 --> 00:07:06,770 Стекла будет меняться в зависимости от контекст основного содержания, которые 144 00:07:06,770 --> 00:07:08,290 оказывается в середине. 145 00:07:08,290 --> 00:07:11,740 Теперь средний может на самом деле показывают Вы множество вещей, например 146 00:07:11,740 --> 00:07:13,290 Ваш код сам по себе. 147 00:07:13,290 --> 00:07:17,070 Или вы можете на самом деле have--, когда Вы нажимаете на раскадровке, которые 148 00:07:17,070 --> 00:07:21,270 это, кстати, просто графический представительство Вашей пользователя 149 00:07:21,270 --> 00:07:25,350 интерфейс для вашего application-- то атрибуты панели 150 00:07:25,350 --> 00:07:27,334 на очень дальнем правом на самом деле изменить. 151 00:07:27,334 --> 00:07:29,750 Теперь есть несколько других вещи, которые я хочу обратить внимание. 152 00:07:29,750 --> 00:07:33,360 Вы можете сортировать изучить вокруг в среде по своему усмотрению. 153 00:07:33,360 --> 00:07:35,730 Но одна из вещей, которая была очень полезна 154 00:07:35,730 --> 00:07:38,470 это кнопка здесь, в правом верхнем углу окна. 155 00:07:38,470 --> 00:07:41,230 Там эта кнопка, Похоже, на далеко 156 00:07:41,230 --> 00:07:46,090 слева от него пункт в сопровождении двух кругах и сортировки 157 00:07:46,090 --> 00:07:49,540 из двух стрелки, указывающие друг от друга. 158 00:07:49,540 --> 00:07:52,640 При переключении между стандартный редактор, который 159 00:07:52,640 --> 00:07:55,560 это далеко левого, один который выбран по умолчанию, 160 00:07:55,560 --> 00:08:01,040 и две окружности перекрывающихся друг друга, что вы на самом деле получаете 161 00:08:01,040 --> 00:08:02,210 двойные вид панели. 162 00:08:02,210 --> 00:08:04,240 >> И это на самом деле будет полезно для нас 163 00:08:04,240 --> 00:08:07,330 когда мы должны связать элементы в пользовательском интерфейсе к коду. 164 00:08:07,330 --> 00:08:09,330 И мы будем говорить больше о что в минуту. 165 00:08:09,330 --> 00:08:12,050 Но поймите, что если вы получите еще больше стекла, как это, 166 00:08:12,050 --> 00:08:15,830 вы можете упростить ваш взгляд просто немного, нажав назад 167 00:08:15,830 --> 00:08:20,680 на одной редакторе. 168 00:08:20,680 --> 00:08:21,580 Все идет нормально. 169 00:08:21,580 --> 00:08:24,560 Поэтому в основном мы имеем код, указанный на левый, атрибуты справа, 170 00:08:24,560 --> 00:08:28,260 и то, что это мы работаем здесь, в самом центре. 171 00:08:28,260 --> 00:08:30,390 >> Так вот, я нажал на главной раскадровке. 172 00:08:30,390 --> 00:08:33,350 И раскадровки, опять же, способ Xcode 173 00:08:33,350 --> 00:08:38,110 что вы можете создать свой пользователю интерфейс с помощью просто перетащите 174 00:08:38,110 --> 00:08:39,130 методы. 175 00:08:39,130 --> 00:08:41,190 И так наша очень Первое применение этого 176 00:08:41,190 --> 00:08:42,720 это именно то, что мы собираемся делать. 177 00:08:42,720 --> 00:08:45,950 Мы собираемся спуститься к очень далеко в правой нижней части 178 00:08:45,950 --> 00:08:49,900 на экране, который содержит Разнообразие элементов пользовательского 179 00:08:49,900 --> 00:08:53,270 что вы можете нажать и перетащить создать свой пользовательский интерфейс. 180 00:08:53,270 --> 00:08:55,550 >> Теперь все это элементы называются просмотров 181 00:08:55,550 --> 00:08:57,370 поскольку в них какой-то точки зрения. 182 00:08:57,370 --> 00:09:00,190 Там же вид изображения, для Например, на самом деле показывают, 183 00:09:00,190 --> 00:09:01,740 изображение на пользовательском интерфейсе. 184 00:09:01,740 --> 00:09:04,310 Там это вид таблица на самом деле показывают таблицу. 185 00:09:04,310 --> 00:09:05,190 Так далее, и так далее. 186 00:09:05,190 --> 00:09:08,250 Там это широкий спектр взгляды, которые вы можете выбрать здесь. 187 00:09:08,250 --> 00:09:11,100 Так что сейчас мы идем искать этикетке. 188 00:09:11,100 --> 00:09:13,550 Вы можете просто пролистать все списки, что там. 189 00:09:13,550 --> 00:09:15,460 Но есть поиск бар в самом низу 190 00:09:15,460 --> 00:09:19,460 что делает его легче определить, конкретные мнения, что вы на самом деле 191 00:09:19,460 --> 00:09:22,020 хочу, чтобы перетащить в пользовательском интерфейсе. 192 00:09:22,020 --> 00:09:23,560 >> Найдено мой лейбл. 193 00:09:23,560 --> 00:09:28,430 Я собираюсь тащить его здесь, прямо на мой приложения. 194 00:09:28,430 --> 00:09:30,130 Прямо там, в средней выглядит хорошо. 195 00:09:30,130 --> 00:09:33,180 И я собираюсь ввести "Hello World!" 196 00:09:33,180 --> 00:09:33,810 Нажмите Enter. 197 00:09:33,810 --> 00:09:34,877 Теперь у меня есть ярлык. 198 00:09:34,877 --> 00:09:36,960 Это не выглядит, как будто это в центре вполне пристойно. 199 00:09:36,960 --> 00:09:38,500 Так что я могу попытаться повторно его в центр. 200 00:09:38,500 --> 00:09:42,100 К счастью, это предлагает эти путеводителей, чтобы сделать вещи намного легче. 201 00:09:42,100 --> 00:09:44,130 Я собираюсь попробовать скомпилировать его. 202 00:09:44,130 --> 00:09:46,570 Надеемся, что она на самом деле работать здесь. 203 00:09:46,570 --> 00:09:52,870 А если это не так, через минуту это будет на самом деле появляются на моем Ipad. 204 00:09:52,870 --> 00:09:54,360 Это прямо здесь. 205 00:09:54,360 --> 00:09:55,060 Там оно и есть. 206 00:09:55,060 --> 00:09:56,590 >> Итак, вот оно что. 207 00:09:56,590 --> 00:09:57,160 Мы закончили. 208 00:09:57,160 --> 00:09:58,868 Мы создали наш очень Первое приложение. 209 00:09:58,868 --> 00:10:01,330 Теперь, очевидно, это ничего не делать. 210 00:10:01,330 --> 00:10:02,280 Это просто метка. 211 00:10:02,280 --> 00:10:07,350 Там нет никакой связи между Пользовательский интерфейс и код. 212 00:10:07,350 --> 00:10:10,130 Так что, если мы на самом деле хотели создать эту связь, 213 00:10:10,130 --> 00:10:14,790 если мы действительно хотели иметь какой-то связи между элементами 214 00:10:14,790 --> 00:10:17,540 которые существуют на экраном и код, который 215 00:10:17,540 --> 00:10:19,810 позволяет нам контролировать эти элементы, то 216 00:10:19,810 --> 00:10:23,570 мы на самом деле нужно посмотреть на сам код. 217 00:10:23,570 --> 00:10:27,000 >> Так что это то, что называется ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 И, в особенности для Ваши первые несколько программ, 219 00:10:30,080 --> 00:10:33,120 Это будет своего рода Большая часть кода, который вы enter-- 220 00:10:33,120 --> 00:10:35,980 будет в этом документе здесь. 221 00:10:35,980 --> 00:10:38,390 Там очень много вещей это здесь до сих пор, не так ли? 222 00:10:38,390 --> 00:10:42,660 Там это комплект UI Импорт класса, переопределить, [? фанк,?] все эти различные вещи. 223 00:10:42,660 --> 00:10:45,820 И это не совсем понятно, что это то, что все это значит. 224 00:10:45,820 --> 00:10:48,570 Итак, давайте сделаем шаг назад от от Xcode для немного 225 00:10:48,570 --> 00:10:52,420 и посмотреть на сам язык, стремительное. 226 00:10:52,420 --> 00:10:56,370 >> Таким образом, с быстрым, это было в дизайн и разработка 227 00:10:56,370 --> 00:10:58,645 на Apple, в течение приблизительно четырех лет до моего понимания. 228 00:10:58,645 --> 00:11:01,270 И есть несколько функций о ней, что действительно здорово. 229 00:11:01,270 --> 00:11:03,910 Прежде всего, это составлен языка, так же, как С. 230 00:11:03,910 --> 00:11:06,120 Таким образом, вы сначала должны скомпилировать его и запустите его 231 00:11:06,120 --> 00:11:09,580 Прежде чем вы действительно выполнить код, который приводит. 232 00:11:09,580 --> 00:11:14,250 Но есть, в отличие от C, интерактивный подскажите что можно реально работать 233 00:11:14,250 --> 00:11:16,680 и введите произвольные команды в. 234 00:11:16,680 --> 00:11:20,280 И очень похоже на консоли JavaScript, которые вы можете быть знакомы с сейчас, 235 00:11:20,280 --> 00:11:24,506 это на самом деле будет оценивать тех, команды и обеспечит Вам выход. 236 00:11:24,506 --> 00:11:26,380 И они даже взяли что к следующему уровню 237 00:11:26,380 --> 00:11:29,100 и они создали что-то называемые игровые площадки в Xcode 238 00:11:29,100 --> 00:11:31,720 что позволит вам визуально работать с кодом. 239 00:11:31,720 --> 00:11:34,910 И мы действительно увидеть некоторые примеры того, что в чуть-чуть. 240 00:11:34,910 --> 00:11:41,680 Он основан на C. C лежит в основе это, потому что все компиляторы 241 00:11:41,680 --> 00:11:46,820 создать код из С и создать объектный код от него. 242 00:11:46,820 --> 00:11:49,240 Но это действительно акции сравнительно мало синтаксис. 243 00:11:49,240 --> 00:11:50,721 Это будет выглядеть довольно разные. 244 00:11:50,721 --> 00:11:51,970 Там будет некоторое сходство. 245 00:11:51,970 --> 00:11:54,140 Но есть будет довольно мало различий 246 00:11:54,140 --> 00:11:57,200 по сравнению, скажем, JavaScript или PHP. 247 00:11:57,200 --> 00:11:59,070 И мы будем указывать эти в минуту. 248 00:11:59,070 --> 00:12:01,420 >> Теперь один из самых больших вещей, о стремителен, что приятно 249 00:12:01,420 --> 00:12:05,650 в том, что, особенно по сравнению С, это означало, чтобы быть безопасным. 250 00:12:05,650 --> 00:12:08,100 Все в нем предназначено для быть очень сильно набрал в. 251 00:12:08,100 --> 00:12:10,780 На самом деле это почти раздражает Во-первых, когда вы впервые 252 00:12:10,780 --> 00:12:15,610 начать работать с быстрым, насколько сколько это усиливает типов во всем мире. 253 00:12:15,610 --> 00:12:17,860 Все это строка должен оставаться строка. 254 00:12:17,860 --> 00:12:22,100 Это очень трудно разобраться в преобразовании это или принудить его в какой-то другой форме. 255 00:12:22,100 --> 00:12:23,800 >> И опять же, мы покажем примеры этого. 256 00:12:23,800 --> 00:12:26,830 Но в конечном итоге понять, что это означало, чтобы защитить вас, 257 00:12:26,830 --> 00:12:32,010 и вам я имею в виду ваш код, от сбой в какой-то ужасный путь, когда 258 00:12:32,010 --> 00:12:34,330 у вас есть какие-то несоответствующие типа. 259 00:12:34,330 --> 00:12:36,040 И опять же, работать с ней. 260 00:12:36,040 --> 00:12:40,210 Потому что это будет неприятно сначала как вы пытаетесь выяснить, почему именно 261 00:12:40,210 --> 00:12:43,070 Вы получаете это необычное ошибки дело с типами. 262 00:12:43,070 --> 00:12:45,350 Но это будет стоит в конце. 263 00:12:45,350 --> 00:12:47,267 >> Это дело с автоматическим управление памятью, 264 00:12:47,267 --> 00:12:49,100 поэтому уже не сделать вас иметь дело с вещами, 265 00:12:49,100 --> 00:12:51,400 как таНос и бесплатно, и все из этих видов вещей. 266 00:12:51,400 --> 00:12:53,066 И это также предназначен для обобщений. 267 00:12:53,066 --> 00:12:58,360 Таким образом, хотя мы можем использовать Xcode для создать IOS приложений и приложений для Mac, 268 00:12:58,360 --> 00:13:00,380 мы также можем просто использовать его в качестве скриптового языка. 269 00:13:00,380 --> 00:13:03,660 И поэтому мы можем использовать его рода не вместо PHP или вместо 270 00:13:03,660 --> 00:13:07,800 Питона на самом деле быстро разобрать и обработать 271 00:13:07,800 --> 00:13:09,800 некоторые данные, которые у нас есть на нашем компьютере. 272 00:13:09,800 --> 00:13:13,290 >> Он имеет широкий спектр современных Особенности, дополнительные принадлежности, изменчивость, 273 00:13:13,290 --> 00:13:17,900 дженерики, затворы, и многое из этого вещи, которые вы можете или не можете признать. 274 00:13:17,900 --> 00:13:22,810 И это только вид сожаления часть языка, что некоторые из них 275 00:13:22,810 --> 00:13:26,700 Сортировать футуристических современных элементов, которые содержатся в элементы 276 00:13:26,700 --> 00:13:34,520 так глубоко укоренилась, что я на самом деле будет есть, чтобы научить вас CS50.5 немного. 277 00:13:34,520 --> 00:13:37,305 >> Мы должны узнать немного больше о некоторых особенностях того, 278 00:13:37,305 --> 00:13:40,180 чтобы понять, что происходит далее, и так что вы можете посмотреть на код 279 00:13:40,180 --> 00:13:42,450 и не чувствовать себя полностью потеряны. 280 00:13:42,450 --> 00:13:44,820 И вы увидите, что я имею в виду с тем, что буквально за минуту. 281 00:13:44,820 --> 00:13:47,830 Итак, let's-- достаточно этого Сортировать теоретического материала. 282 00:13:47,830 --> 00:13:52,450 Давайте реально взглянуть на наш Самый первый Swift программа. 283 00:13:52,450 --> 00:13:53,590 Это одна строка кода. 284 00:13:53,590 --> 00:13:57,690 Строка 14 здесь, это говорит печати L N привет CS50. 285 00:13:57,690 --> 00:14:01,160 >> Так что несколько вещей, которые это очень разные об этом по сравнению 286 00:14:01,160 --> 00:14:04,140 к вещам, которые вы могли бы используется, чтобы из С, например. 287 00:14:04,140 --> 00:14:08,390 Один из них является то, что нет никакого intmain, нет включают раздел, 288 00:14:08,390 --> 00:14:10,790 нет ни этого дополнительного материала. 289 00:14:10,790 --> 00:14:13,790 Включают в себя, как стандарт I / O, как в библиотеках 290 00:14:13,790 --> 00:14:16,580 что на самом деле обеспечивают Стандартные функции языка, 291 00:14:16,580 --> 00:14:19,180 автоматически включаются, как часть стандартной библиотеки Свифта 292 00:14:19,180 --> 00:14:20,680 и что автоматически импортируются. 293 00:14:20,680 --> 00:14:23,740 Вы не должны делать что импорт вручную. 294 00:14:23,740 --> 00:14:27,360 >> Intmain не существует, поскольку Главная точка входа для кода 295 00:14:27,360 --> 00:14:29,470 на самом деле в начале кода. 296 00:14:29,470 --> 00:14:32,000 Таким образом, любой код, который у вас есть с начала 297 00:14:32,000 --> 00:14:34,940 на самом деле будет выполняться с самого начала. 298 00:14:34,940 --> 00:14:36,520 Так что это действительно существенно упрощает. 299 00:14:36,520 --> 00:14:38,470 Обратите внимание также, что нет запятой. 300 00:14:38,470 --> 00:14:41,040 Там нет точки с запятой в этом языке. 301 00:14:41,040 --> 00:14:43,261 Вы ставите заявление на индивидуальной линии 302 00:14:43,261 --> 00:14:45,510 а затем следующая строка представляет другую заявление. 303 00:14:45,510 --> 00:14:47,420 Если Вы хотите положить mulitiple заявления онлайн, 304 00:14:47,420 --> 00:14:49,086 то у вас есть отделить его точкой с запятой. 305 00:14:49,086 --> 00:14:50,940 Но по большей части, Хороший стиль, мы 306 00:14:50,940 --> 00:14:56,530 никогда не увидите запятой для цели, разделяющих отчетности 307 00:14:56,530 --> 00:14:58,420 в SWIFT. 308 00:14:58,420 --> 00:14:59,820 Так как это действительно работает? 309 00:14:59,820 --> 00:15:04,080 Ну очень похоже на C мы на самом деле нужно собрать это. 310 00:15:04,080 --> 00:15:10,640 И поэтому мы можем сделать, что с помощью Свифт С, а затем 1.Swift. 311 00:15:10,640 --> 00:15:13,850 А потом через пару минут будет скомпилирован 312 00:15:13,850 --> 00:15:16,340 и тогда я могу запустить один пункт. 313 00:15:16,340 --> 00:15:19,691 И чем это будет просто сказать "Привет CS50." 314 00:15:19,691 --> 00:15:20,690 Высокий, так что мы идем. 315 00:15:20,690 --> 00:15:22,273 Там наш первый привет мир программа. 316 00:15:22,273 --> 00:15:24,790 Давайте перейдем к номер два. 317 00:15:24,790 --> 00:15:30,450 >> Сейчас в this-- это изменилось чуть-чуть, потому что в то время как правило, вы 318 00:15:30,450 --> 00:15:34,720 do-- на самом деле всегда вы должны составить быстрый приложение перед вами 319 00:15:34,720 --> 00:15:37,180 реально работать it-- один из замечательных особенностей 320 00:15:37,180 --> 00:15:40,230 что я упоминал прежде, что Свифт действительно может быть использован в то 321 00:15:40,230 --> 00:15:43,390 из псевдо-режиме интерпретации, есть на самом деле, как переводчика. 322 00:15:43,390 --> 00:15:46,690 Но то, что это будет сделать, это есть является, по сути, быстрые приложения 323 00:15:46,690 --> 00:15:47,520 что вы можете запустить. 324 00:15:47,520 --> 00:15:51,050 >> Так, например, если вы просто введите Свифт здесь, что произойдет 325 00:15:51,050 --> 00:15:52,330 является то, что вы получите подсказку. 326 00:15:52,330 --> 00:15:59,040 И вы можете ввести быстрые Код, распечатать привет, и запустить его. 327 00:15:59,040 --> 00:16:01,867 И это будет на самом деле print-- Ну, это не печатали в этом случае 328 00:16:01,867 --> 00:16:04,450 потому что это печатается по центру из, которых не видно здесь. 329 00:16:04,450 --> 00:16:06,660 Но это на самом деле может функционировать. 330 00:16:06,660 --> 00:16:09,580 И поэтому в данном случае, я просто собирается использовать это в качестве сценария. 331 00:16:09,580 --> 00:16:11,259 И я могу на самом деле запустить этот код. 332 00:16:11,259 --> 00:16:13,800 Так так, что я на самом деле запустить это будет немного отличаться, 333 00:16:13,800 --> 00:16:15,710 но вы увидите, что через минуту. 334 00:16:15,710 --> 00:16:18,890 Теперь, в этом случае, что мы собираемся сделать это сначала определить переменную. 335 00:16:18,890 --> 00:16:22,160 Так что это, как мы определяем переменная быстро, 336 00:16:22,160 --> 00:16:25,900 что мы используем, пусть ключевое слово, а затем по имени переменной, 337 00:16:25,900 --> 00:16:29,280 а затем мы приведем некоторые инициализации данных необязательно. 338 00:16:29,280 --> 00:16:34,660 Так что это дело мы определяем константа, названная имя, 339 00:16:34,660 --> 00:16:37,775 и мы собираемся использовать, что Выход нашей печати линии 340 00:16:37,775 --> 00:16:39,590 в самом низу, привет именем. 341 00:16:39,590 --> 00:16:43,260 >> Теперь обратите внимание, что вместо использования% S, мы можем инкапсулировать имя этого 342 00:16:43,260 --> 00:16:49,960 Переменная в / () и быть в состоянии объединить в содержимом это 343 00:16:49,960 --> 00:16:51,790 Строка в эту строку. 344 00:16:51,790 --> 00:16:56,510 Теперь в отличие от C, строка текущая реальная введите SWIFT. 345 00:16:56,510 --> 00:16:59,240 И так сидит рядом Интс и рядом 346 00:16:59,240 --> 00:17:02,220 удваивается очень легко и, естественно, по сравнению 347 00:17:02,220 --> 00:17:05,450 некоторые из другой языки, которые мы уже видели. 348 00:17:05,450 --> 00:17:07,980 Так что это будет на самом деле работать так же, как можно было бы ожидать. 349 00:17:07,980 --> 00:17:10,540 >> Я могу запустить 2.swift. 350 00:17:10,540 --> 00:17:14,390 И мы видим, что меня зовут на самом деле сращивания в "Hello Dan." 351 00:17:14,390 --> 00:17:16,050 Хорошо, здорово. 352 00:17:16,050 --> 00:17:17,485 Переходя к номер три. 353 00:17:17,485 --> 00:17:19,359 Теперь это было немного белого ложь, что я 354 00:17:19,359 --> 00:17:23,369 сказал, что путь, который мы заявляем, переменные, чтобы использовать выпущенных ключевое слово. 355 00:17:23,369 --> 00:17:27,640 Как много раз, как вы, возможно, вы можете сделать Чтобы использовать давайте, потому что, что это делает 356 00:17:27,640 --> 00:17:29,280 это определяет константу. 357 00:17:29,280 --> 00:17:33,010 И это говорит стремителен, что он может оптимизировать скорость вашего приложения 358 00:17:33,010 --> 00:17:36,230 потому что он знает, что переменная не изменится. 359 00:17:36,230 --> 00:17:38,760 >> Так тщательно оценивать когда вы собираетесь использовать 360 00:17:38,760 --> 00:17:41,382 переменная для Цели его изменения. 361 00:17:41,382 --> 00:17:43,340 И когда вы собираетесь создать переменную просто 362 00:17:43,340 --> 00:17:47,010 провести некоторые данные, и это на самом деле не собирается менять. 363 00:17:47,010 --> 00:17:50,150 Так что это понятие неизменности, это на самом деле не собирается менять, 364 00:17:50,150 --> 00:17:53,740 является важным даже далеко вниз, как определения переменных. 365 00:17:53,740 --> 00:17:56,870 Так вот, когда мы задали имя, Пусть имя, и в этом случае 366 00:17:56,870 --> 00:18:02,120 это постоянная, то есть типа строка, и она равна Дан. 367 00:18:02,120 --> 00:18:05,580 >> Так в то время как в до версия, она infers-- и "это" 368 00:18:05,580 --> 00:18:08,220 Я имею в виду swift-- Свифт выводит тип данных 369 00:18:08,220 --> 00:18:10,850 что мы вступили в переменную. 370 00:18:10,850 --> 00:18:12,930 В этом случае, мы можем быть явным. 371 00:18:12,930 --> 00:18:17,590 Так пусть тогда имя этого переменная имя, затем двоеточие. 372 00:18:17,590 --> 00:18:21,350 И после двоеточия не мы указать тип данных. 373 00:18:21,350 --> 00:18:24,694 Так больше не это INT имя или Название строка или что-то подобное. 374 00:18:24,694 --> 00:18:26,860 Но вместо того, чтобы позволить этикетку, мы определение или нет 375 00:18:26,860 --> 00:18:29,090 это постоянная или переменная, за которым следует имя, 376 00:18:29,090 --> 00:18:31,870 затем тип дополнительно. 377 00:18:31,870 --> 00:18:34,730 >> Таким образом, в этом случае мы определяем это имя строка. 378 00:18:34,730 --> 00:18:35,790 Мы говорим, что Дэн. 379 00:18:35,790 --> 00:18:39,270 И теперь у меня другая переменная, в этом случае он называется меткой. 380 00:18:39,270 --> 00:18:42,090 Но заметьте, что это с префиксом Вар ключевому слову. 381 00:18:42,090 --> 00:18:44,430 Средства вар ключевых слов что эта переменная может 382 00:18:44,430 --> 00:18:48,720 изменить на более позднем этапе в Время, где-то в коде 383 00:18:48,720 --> 00:18:52,480 мы можем на самом деле изменить его, и он не даст нам какой-либо конкретной ошибки. 384 00:18:52,480 --> 00:18:56,760 >> Мы можем сделать стандартный объединения оператор здесь с помощью символа плюс 385 00:18:56,760 --> 00:19:00,130 на самом деле добавить наш имя в этой строке. 386 00:19:00,130 --> 00:19:02,921 И тогда мы сможем распечатать как мы только что видели минуту назад. 387 00:19:02,921 --> 00:19:04,920 Теперь давайте говорить, что вы Чтобы создать переменную 388 00:19:04,920 --> 00:19:06,586 но вы не хотите, чтобы инициализировать его еще. 389 00:19:06,586 --> 00:19:08,590 Вы еще не хочу положить любые данные в нем. 390 00:19:08,590 --> 00:19:11,760 Ну что вы должны сказать быстрым, что тип данных, 391 00:19:11,760 --> 00:19:16,430 будет, прежде чем вы можете фактически определяют его правильно. 392 00:19:16,430 --> 00:19:20,360 >> Таким образом, в этом случае, когда мы определили переменная с именем класса, мы должны быть 393 00:19:20,360 --> 00:19:24,450 Явное о его типе, поскольку он не может сделать вывод, просто глядя 394 00:19:24,450 --> 00:19:27,300 на инициализированные данные что вы предоставляете к нему. 395 00:19:27,300 --> 00:19:30,050 Это даст нам об ошибке, если просто введите вар класс, например, 396 00:19:30,050 --> 00:19:31,830 потому что она не имеет типа поэтому. 397 00:19:31,830 --> 00:19:33,353 Так класс = 100. 398 00:19:33,353 --> 00:19:35,790 Так что 100 представляет собой целое число, его подходит очень хорошо в этом. 399 00:19:35,790 --> 00:19:36,998 Он будет продолжать функционировать. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Мы видим, как то может объединить это в. 402 00:19:43,022 --> 00:19:44,730 Теперь вы можете быть соблазн, если вы на самом деле 403 00:19:44,730 --> 00:19:48,610 хотел объединить переходят в другой текстовой строки, 404 00:19:48,610 --> 00:19:52,560 в другую строку, что вы просто использовать тот же оператор конкатенации. 405 00:19:52,560 --> 00:19:54,630 И это, как правило, верно. 406 00:19:54,630 --> 00:20:00,540 Но Свифт не позволит вам неявно изменить тип данных. 407 00:20:00,540 --> 00:20:03,440 Таким образом, в данном случае это линия, 25, не удастся 408 00:20:03,440 --> 00:20:06,650 потому что сорт целое число, а не строка. 409 00:20:06,650 --> 00:20:08,760 И таким образом, есть несоответствие набор типов. 410 00:20:08,760 --> 00:20:11,780 Таким образом, вы должны быть явными, когда Вы хотите изменить эти данные, 411 00:20:11,780 --> 00:20:14,080 если вы хотите, чтобы заставить это данных в другой тип 412 00:20:14,080 --> 00:20:17,250 и сказать, хорошо, я хочу взять Этот сорт, который является целым числом, 413 00:20:17,250 --> 00:20:19,050 и преобразовать его в строку. 414 00:20:19,050 --> 00:20:23,970 >> Итак, я беру капитала S типа String все типы, вы заметите,, капитализируются, 415 00:20:23,970 --> 00:20:26,280 Int, Double, String, так далее, и так далее. 416 00:20:26,280 --> 00:20:28,930 Все они капитализируются просто чтобы сделать вещи проще. 417 00:20:28,930 --> 00:20:32,240 И мы будем говорить выгоду Строка переходят в его классе. 418 00:20:32,240 --> 00:20:35,020 И это создаст Строка из этого числа. 419 00:20:35,020 --> 00:20:37,970 И тогда мы сможем объединить два очень красиво. 420 00:20:37,970 --> 00:20:40,500 Любые вопросы по этой вещи до сих пор? 421 00:20:40,500 --> 00:20:43,770 Ладно, давайте пахать до номер четыре. 422 00:20:43,770 --> 00:20:47,870 >> Теперь давайте поговорим о некоторых более продвинутых структуры, как массивы и циклы. 423 00:20:47,870 --> 00:20:54,920 И в отличие от C, массивы в Swift не представлены указателями. 424 00:20:54,920 --> 00:20:58,730 Указатели в SWIFT, Хотя они существуют, называется 425 00:20:58,730 --> 00:21:02,840 как небезопасных указателей или некоторые подобный тип, как это, 426 00:21:02,840 --> 00:21:04,950 они не подвергаются вас нормально. 427 00:21:04,950 --> 00:21:07,300 Таким образом, становится очень трудно для Вас, чтобы манипулировать 428 00:21:07,300 --> 00:21:10,020 памяти прямо из вашего компьютера. 429 00:21:10,020 --> 00:21:11,670 >> Так массивы только тип данных. 430 00:21:11,670 --> 00:21:16,830 И они ссылаются, используя этот вид сейчас стандартным квадратным обозначения кронштейн 431 00:21:16,830 --> 00:21:18,280 что вы видели раньше. 432 00:21:18,280 --> 00:21:21,130 Но когда вы на самом деле хотите, чтобы определить тип переменной 433 00:21:21,130 --> 00:21:24,330 в виде массива некоторых Особый тип, то вы 434 00:21:24,330 --> 00:21:27,150 положить, что тип в квадратных скобках. 435 00:21:27,150 --> 00:21:30,260 Так что я говорю здесь является то, что Я создаю переменную с именем 436 00:21:30,260 --> 00:21:33,930 сорта типа INT массива. 437 00:21:33,930 --> 00:21:37,380 И я устанавливаю, что равно некоторые инициализированные данные, которые в этом случае 438 00:21:37,380 --> 00:21:42,960 100, 0, 90, 85, который находится всего в Коллекция произвольных классов здесь. 439 00:21:42,960 --> 00:21:46,480 В настоящее время в этом случае я мог бы, помните, удалить тип, 440 00:21:46,480 --> 00:21:49,580 и было бы в состоянии вывести его на основе инициализированных данных. 441 00:21:49,580 --> 00:21:51,990 Но если я удалил это и Мне нужно, чтобы установить его позже, 442 00:21:51,990 --> 00:21:56,840 то я бы, чтобы убедиться, что у меня есть тип там. 443 00:21:56,840 --> 00:21:58,750 Ладно, давайте двигаться дальше. 444 00:21:58,750 --> 00:22:03,010 Таким образом, мы can-- массивы предоставляете нам выбор 445 00:22:03,010 --> 00:22:07,130 методов через такой точечной нотации у вас, вероятно, уже знакомы с. 446 00:22:07,130 --> 00:22:10,360 Так grades.count, например, говорит нам именно столько 447 00:22:10,360 --> 00:22:13,680 элементов, которые содержащаяся в данном массиве. 448 00:22:13,680 --> 00:22:17,260 >> Если я хочу, чтобы добавить additional-- Теперь обратите внимание, что это Var 449 00:22:17,260 --> 00:22:20,140 и не-- это переменная и не является постоянной, которая 450 00:22:20,140 --> 00:22:24,410 означает, что я могу изменить содержимое этого массива, я могу добавить объекты к нему. 451 00:22:24,410 --> 00:22:28,870 Но я не могу просто сказать сорта а затем в квадратных скобках 452 00:22:28,870 --> 00:22:33,280 четыре, потому что это будет из ошибки границ в этом случае. 453 00:22:33,280 --> 00:22:36,190 Если я хочу на самом деле изменение размер массива, 454 00:22:36,190 --> 00:22:41,140 Я должен использовать метод точка добавить к добавить кое-что к в самом его конце. 455 00:22:41,140 --> 00:22:46,900 Я могу, однако, изменение индивидуальные показатели. 456 00:22:46,900 --> 00:22:48,920 >> Так что я мог бы использовать оценки а затем в квадратных скобках 457 00:22:48,920 --> 00:22:52,480 нулевой манипулировать этот первый индекс и так далее, как вы обычно ожидаете. 458 00:22:52,480 --> 00:22:56,530 И что я могу сделать то же самое на самом деле получить данные из этого также. 459 00:22:56,530 --> 00:23:00,420 Теперь есть также своего рода фантазии метод сделать это, оценки плюс равных 460 00:23:00,420 --> 00:23:02,525 а затем еще один индекс, который будет append-- 461 00:23:02,525 --> 00:23:04,400 или не другой index-- но другой список, который 462 00:23:04,400 --> 00:23:07,340 будет добавлять этот список к задней части сортов. 463 00:23:07,340 --> 00:23:09,780 И оценка будет затем содержать все это. 464 00:23:09,780 --> 00:23:13,850 Но это своего рода дополнительной вещь что я просто покажу вам, для удовольствия. 465 00:23:13,850 --> 00:23:14,910 >> Теперь есть цикл. 466 00:23:14,910 --> 00:23:18,970 И это начало, где вещи начинают немного измениться. 467 00:23:18,970 --> 00:23:22,920 Обратите внимание, как это для петли отличается от для петель в С 468 00:23:22,920 --> 00:23:26,470 Теперь отмечу, что для петель в Swift может 469 00:23:26,470 --> 00:23:30,650 быть сделаны, чтобы выглядеть, как на петель в С, но есть много более полезных конструкций 470 00:23:30,650 --> 00:23:37,840 что существенно устранить необходимость иметь для вар я равна 0 с запятой я 471 00:23:37,840 --> 00:23:40,340 меньше, чем какой-то длины, так далее, и так далее, не так ли? 472 00:23:40,340 --> 00:23:42,940 И эта конструкция является лишь одним из них. 473 00:23:42,940 --> 00:23:49,030 >> Для индекса, индекс нового Переменная, в этом случае, в диапазоне. 474 00:23:49,030 --> 00:23:52,730 И то, что я хочу сказать, что есть Диапазон от 0 все вплоть до 475 00:23:52,730 --> 00:23:55,870 но не включая grades.count. 476 00:23:55,870 --> 00:23:58,470 Так что это точка точка меньше чем знак представляет 477 00:23:58,470 --> 00:24:05,040 Диапазон значений, начиная с нуля все, вплоть до grades.count минус 1. 478 00:24:05,040 --> 00:24:07,070 Существует отдельный оператор, который существует, 479 00:24:07,070 --> 00:24:13,320 что точка точка точка, которая бы означает, что я хочу диапазоне от нуля 480 00:24:13,320 --> 00:24:16,310 сортам рассчитывать включительно. 481 00:24:16,310 --> 00:24:19,130 >> Но в этом случае, так как они массивы нулевой отметки, мы, конечно, 482 00:24:19,130 --> 00:24:23,290 не хотят идти на Максимальное количество классов. 483 00:24:23,290 --> 00:24:26,390 Я могу суммировать оценки, как вы, возможно, ожидать, и выход все эти вещи. 484 00:24:26,390 --> 00:24:29,620 ОК, как двигаться дальше. 485 00:24:29,620 --> 00:24:32,270 Теперь давайте поговорим о функциях. 486 00:24:32,270 --> 00:24:35,465 Для того, чтобы определить функцию Вы используете ключевое слово фанк. 487 00:24:35,465 --> 00:24:38,090 И опять же, у Свифта вы должны быть очень осторожны с типами. 488 00:24:38,090 --> 00:24:41,530 Вы предоставляете ему параметры определяя, например, 489 00:24:41,530 --> 00:24:45,440 имя параметра и Затем в Colin, тип данных 490 00:24:45,440 --> 00:24:47,690 что вы ожидаете, что Параметр принять. 491 00:24:47,690 --> 00:24:50,700 >> Таким образом, в данном случае мы имеем Функция называется граф класса печати. 492 00:24:50,700 --> 00:24:54,630 Он принимает переменную зачетную книжку, или, скорее, параметр, называемый зачетную книжку. 493 00:24:54,630 --> 00:24:59,267 И мы ожидаем, что зачетную книжку быть массив целых чисел. 494 00:24:59,267 --> 00:25:01,350 Если зачетную книжку пуст, Мы напечатаем одну вещь. 495 00:25:01,350 --> 00:25:06,090 В противном случае мы будем печатать номер марок, что это на самом деле. 496 00:25:06,090 --> 00:25:09,470 >> Теперь, если мы хотим, чтобы вернуться некоторое значение, то путь 497 00:25:09,470 --> 00:25:14,595 что мы модифицируем это определение на самом деле использовать это ключевое слово стрелкой, 498 00:25:14,595 --> 00:25:16,870 или использовать эту стрелку означающее. 499 00:25:16,870 --> 00:25:19,440 Так вот, мы собираемся определить Функция называется средней. 500 00:25:19,440 --> 00:25:21,940 Мы собираемся принять список номеров. 501 00:25:21,940 --> 00:25:25,430 И мы собираемся вернуться двойной, который, мы надеемся, 502 00:25:25,430 --> 00:25:31,270 как среднее этого массива. 503 00:25:31,270 --> 00:25:34,570 А для того, чтобы сделать это, для того, на самом деле вычислить это среднее, 504 00:25:34,570 --> 00:25:38,651 мы будем принимать сумму и мы, Конечно суммировать все объекты 505 00:25:38,651 --> 00:25:39,400 в этом массиве. 506 00:25:39,400 --> 00:25:41,480 >> Обратите внимание, что есть новый стиль для цикла здесь. 507 00:25:41,480 --> 00:25:45,450 Мы не должны быть явными о перебора каждого элемента, 508 00:25:45,450 --> 00:25:48,280 но мы можем вместо сказать класса и зачетную книжку, смысл 509 00:25:48,280 --> 00:25:50,930 что для каждого элемент, который мы имеем в этом, 510 00:25:50,930 --> 00:25:53,482 предусмотреть, что пункт в этом переменная с именем класса. 511 00:25:53,482 --> 00:25:54,940 И я хочу сделать что-то с ним. 512 00:25:54,940 --> 00:26:00,350 Так что я собираюсь подвести все эти данные а на самом деле вернуться двойную деление. 513 00:26:00,350 --> 00:26:04,436 >> Теперь обратите внимание снова здесь есть Концепция целочисленного деления в Свифт. 514 00:26:04,436 --> 00:26:06,810 Если вы хотите удвоить разделение потому что вы хотите знаков после запятой, 515 00:26:06,810 --> 00:26:09,460 то вы должны быть ясными, не только об одной стороне, 516 00:26:09,460 --> 00:26:14,030 потому что он не собирается, чтобы позволить вам заставить данные по обе стороны от этого, 517 00:26:14,030 --> 00:26:17,030 у вас есть на самом деле, конечно обе стороны в парном разряде 518 00:26:17,030 --> 00:26:19,440 так что вы очень Явное о убедившись, 519 00:26:19,440 --> 00:26:23,370 что вы делаете двойной деление. 520 00:26:23,370 --> 00:26:26,150 >> Давайте двигаться дальше. 521 00:26:26,150 --> 00:26:31,150 Так что, если я действительно хочу, чтобы accept-- Таким образом, в этом конкретном примере, 522 00:26:31,150 --> 00:26:34,260 это по-прежнему команда линия приложение. 523 00:26:34,260 --> 00:26:37,920 И мы начинаем видеть некоторые из ограничения молодой языка 524 00:26:37,920 --> 00:26:41,850 в том, что хотя мы можем доступ к аргументы с помощью 525 00:26:41,850 --> 00:26:44,940 это process.arguments, это до сих пор не обязательно чистым 526 00:26:44,940 --> 00:26:46,200 вещь, которую мы когда-либо видели. 527 00:26:46,200 --> 00:26:49,142 Но в основном я призываю вас к виду Взгляните на этот код 528 00:26:49,142 --> 00:26:51,100 и попытаться выяснить, что именно происходит. 529 00:26:51,100 --> 00:26:55,030 >> По сути то, что происходит в том, что мы берем список аргументов 530 00:26:55,030 --> 00:26:57,610 и были принудить их в целые числа, а затем мы 531 00:26:57,610 --> 00:27:03,620 собирается использовать это в качестве пути для печати из в среднем все наши классы. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Двигаться дальше. 534 00:27:07,350 --> 00:27:11,190 Теперь есть еще один тип data-- еще тип данных, а не массивы 535 00:27:11,190 --> 00:27:14,940 называемые словари, которые очень похоже на хеши или хэш-карты 536 00:27:14,940 --> 00:27:18,560 и подобны также Ассоциативные массивы в PHP. 537 00:27:18,560 --> 00:27:20,770 Таким образом, они имеют представление ключей и значений. 538 00:27:20,770 --> 00:27:23,780 >> И они определяются также с Эта площадь обозначения кронштейн, 539 00:27:23,780 --> 00:27:26,750 но разница в том, что словари имеют 540 00:27:26,750 --> 00:27:29,370 внутри квадратных скобок, двоеточия. 541 00:27:29,370 --> 00:27:33,850 И Двоеточие разделяет данные тип, который является ключевым и значение. 542 00:27:33,850 --> 00:27:38,540 Таким образом, в данном случае, я собираюсь создать Словари принять некоторые оценки. 543 00:27:38,540 --> 00:27:44,200 И это будет тип строки: INT, 544 00:27:44,200 --> 00:27:46,940 Это означает, что все ключи собираются быть строками, 545 00:27:46,940 --> 00:27:53,080 и все значения тех ключи собираются быть целыми числами. 546 00:27:53,080 --> 00:27:55,780 >> Что это означает, что я могу затем ссылаться на конкретные данные 547 00:27:55,780 --> 00:28:00,490 что я хочу использовать эти ключи, а чем при использовании цифровых показателей, как I 548 00:28:00,490 --> 00:28:04,350 бы для стандартного массива. 549 00:28:04,350 --> 00:28:06,470 Теперь давайте разберемся, есть одна важная вещь, 550 00:28:06,470 --> 00:28:10,790 что я также хочу упомянуть о Этот конкретный последовательность кода. 551 00:28:10,790 --> 00:28:12,910 И это то, что есть Еще один тип данных, 552 00:28:12,910 --> 00:28:15,580 или, скорее, там это Идея данных, что является 553 00:28:15,580 --> 00:28:18,340 содержится в Swift называется УСТРОЙСТВА. 554 00:28:18,340 --> 00:28:21,270 >> И то, что опциями означает, что он признает тот факт, 555 00:28:21,270 --> 00:28:27,500 что иногда вы не собираетесь получить данные, которые вы на самом деле ожидать. 556 00:28:27,500 --> 00:28:31,400 И так, что я имею в виду, что is-- давайте взгляните на этой последовательности кода 557 00:28:31,400 --> 00:28:38,910 который последовательно перебирает на себя все Аргументы, которые были переданы этому коду 558 00:28:38,910 --> 00:28:43,460 и пытается преобразовать их, пытается разделить на множество строк, 559 00:28:43,460 --> 00:28:47,310 потому что он принимает очень Особый тип аргумента. 560 00:28:47,310 --> 00:28:51,530 И тогда он будет пытаться заставить строки, которые представляют номера 561 00:28:51,530 --> 00:28:55,460 в целых числах, которые являются сорта, что я могу затем вычислить. 562 00:28:55,460 --> 00:28:58,230 >> Поэтому в основном я собираюсь использовать этот раскол функцию, которая 563 00:28:58,230 --> 00:29:00,080 существует в Swift стандартная библиотека. 564 00:29:00,080 --> 00:29:03,720 Я собираюсь пройти в него строка, что я хочу, чтобы разделить. 565 00:29:03,720 --> 00:29:06,980 А потом, в использовании этого Сортировать фанки синтаксиса, который 566 00:29:06,980 --> 00:29:09,670 Я не знаю, будем ли мы добраться, но может быть, мы 567 00:29:09,670 --> 00:29:14,320 будет на самом деле определить точное символ, который мы хотим разделить на. 568 00:29:14,320 --> 00:29:16,030 Итак, что же это на самом деле выглядит? 569 00:29:16,030 --> 00:29:18,740 Давайте взглянем на на самом деле работает этот код. 570 00:29:18,740 --> 00:29:22,000 >> Так, например, скажем, у меня есть Тест и я получил 50 на этом. 571 00:29:22,000 --> 00:29:23,960 И у меня есть PSETs и Я получил сто по этому вопросу. 572 00:29:23,960 --> 00:29:29,180 И я got-- есть еще один Тест и я получил 40 на этом. 573 00:29:29,180 --> 00:29:33,520 Я ударил Enter, и в конечном итоге то, что произойдет это то, что он делает 574 00:29:33,520 --> 00:29:37,730 принимает эти параметры, расщепление строки в этих двоеточия, 575 00:29:37,730 --> 00:29:41,390 признавая, что есть два элемента в каждом из, 576 00:29:41,390 --> 00:29:43,700 и это по существу отслеживать каждого из них. 577 00:29:43,700 --> 00:29:49,226 >> Так что я в моем словаре викторину, чья Значение, представленное числом 50, 578 00:29:49,226 --> 00:29:54,290 У меня есть PSET, что имеет значение 100, и викторины, который имеет значение 40. 579 00:29:54,290 --> 00:29:57,400 Позже в коде I на самом деле в среднем все те значения 580 00:29:57,400 --> 00:30:01,160 и перечислить все ключи что особое словарь. 581 00:30:01,160 --> 00:30:03,217 Но это важно так что вы можете заметить, 582 00:30:03,217 --> 00:30:06,050 что происходит, это то, что мы хочу сделать, это принять эту строку 583 00:30:06,050 --> 00:30:11,450 и разделить его на этого персонажа, которые мы можем сделать снова и этот раскол, 584 00:30:11,450 --> 00:30:15,690 Функция использовании такого типа Интересно, синтаксис, который существует здесь. 585 00:30:15,690 --> 00:30:17,880 >> Просто сейчас предположить, что это нормально. 586 00:30:17,880 --> 00:30:19,980 Мы будем смотреть больше на это всего на некоторое время. 587 00:30:19,980 --> 00:30:23,230 Но теперь есть интересное аспект, который мы на самом деле 588 00:30:23,230 --> 00:30:27,250 хочу попробовать преобразовать это строки в число. 589 00:30:27,250 --> 00:30:29,720 Но в других языках что может случиться, 590 00:30:29,720 --> 00:30:33,440 что мы, вероятно, попытается это сделать, и либо получить назад 591 00:30:33,440 --> 00:30:36,185 какая-то стража значение как отрицательный 592 00:30:36,185 --> 00:30:39,420 или, может быть нулевым или что-то подобное. 593 00:30:39,420 --> 00:30:41,070 Или, может быть, было бы просто вызвал ошибку. 594 00:30:41,070 --> 00:30:42,820 И мы должны были бы затем поймать эту ошибку 595 00:30:42,820 --> 00:30:44,820 а затем попытаться сделать то, основано на том, 596 00:30:44,820 --> 00:30:48,280 что этого преобразования в целое число не удалось. 597 00:30:48,280 --> 00:30:50,460 Вот где эта идея из дополнительных опций входит. 598 00:30:50,460 --> 00:30:56,120 Вы на самом деле можно создать тип данных, это знак вопроса INT, например. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Это означает, что этого же числа это, по сути, дополнительно. 601 00:31:01,910 --> 00:31:05,980 А что будет в том, что он может содержать целое число, или это не может. 602 00:31:05,980 --> 00:31:10,650 Это может, в действительности, будет этот другой Идея, полностью называется Нилл. 603 00:31:10,650 --> 00:31:14,900 В котором это означает, что существует нет значения вообще в этом. 604 00:31:14,900 --> 00:31:16,810 Это даже не ноль, там просто никакого значения. 605 00:31:16,810 --> 00:31:18,790 Там абсолютно никакого значения представлены. 606 00:31:18,790 --> 00:31:21,650 >> И это то, что эта линия 71 делает. 607 00:31:21,650 --> 00:31:25,990 Является то, что говорю, что я хочу попробовать установить значение, 608 00:31:25,990 --> 00:31:31,790 переменная с именем класса, равно преобразование этой строки в междунар. 609 00:31:31,790 --> 00:31:34,010 Так что я взял эту строку, это первые компоненты, 610 00:31:34,010 --> 00:31:37,680 или, скорее, второй Компоненты, так как это 611 00:31:37,680 --> 00:31:40,770 равна нулю индексируются, это Строка, я разделить. 612 00:31:40,770 --> 00:31:42,930 И я хочу, чтобы преобразовать что на целое число. 613 00:31:42,930 --> 00:31:46,730 Но это не всегда может перейти нормально, потому что представить себе 614 00:31:46,730 --> 00:31:50,710 Что бы произошло, если бы, вместо того, типа Количество, я печатаю конечно, как ASDF. 615 00:31:50,710 --> 00:31:51,534 >> Это будет провал. 616 00:31:51,534 --> 00:31:54,200 Это на самом деле не будет возможность конвертировать, что в целое число 617 00:31:54,200 --> 00:31:55,510 как я хотел бы ожидать. 618 00:31:55,510 --> 00:31:58,660 Таким образом, вместо стартует какой-то ошибки, 619 00:31:58,660 --> 00:32:01,210 у нас есть эта идея необязательно. 620 00:32:01,210 --> 00:32:04,240 А это значит, что с помощью это знак вопроса я могу сказать 621 00:32:04,240 --> 00:32:09,100 ОК, это возможно, что я могу взять это, превратили его в INT, 622 00:32:09,100 --> 00:32:12,630 и положил его в переменной, который также будет Int. 623 00:32:12,630 --> 00:32:15,420 Если это так, то это означает, что это было успешным 624 00:32:15,420 --> 00:32:18,720 и это первая часть Блок может продолжаться. 625 00:32:18,720 --> 00:32:21,040 >> В противном случае, она не смогла. 626 00:32:21,040 --> 00:32:25,840 Там нет значения в grade-- или а нет значение в существующих, 627 00:32:25,840 --> 00:32:30,220 и я на самом деле есть, чтобы попытаться справиться с этой ошибки. 628 00:32:30,220 --> 00:32:33,340 Вы будете видеть это вопросительный знак все время 629 00:32:33,340 --> 00:32:35,990 у Свифта и в примере кода для Swift. 630 00:32:35,990 --> 00:32:40,980 И в самом деле Нилл оператор, такого рода вопросительный знак, часть опциями, 631 00:32:40,980 --> 00:32:45,057 будет, вероятно, один из более трудных вещей, 632 00:32:45,057 --> 00:32:47,640 к виду обернуть вокруг головы как вы на самом деле с ним работать. 633 00:32:47,640 --> 00:32:48,490 >> Это может иметь смысл сейчас. 634 00:32:48,490 --> 00:32:50,760 И в самом деле, когда я был писать пример кода для этого, 635 00:32:50,760 --> 00:32:52,780 Конечно, я понимал, что происходит, 636 00:32:52,780 --> 00:32:55,570 но все-таки поймал меня сюрприз каждый так часто 637 00:32:55,570 --> 00:32:58,370 когда я найду, что некоторые данные на самом деле 638 00:32:58,370 --> 00:33:04,024 ноль версия, опционально версия данные, которые я ожидал. 639 00:33:04,024 --> 00:33:06,190 Так что просто понимать, что если вы есть дополнительный вариант 640 00:33:06,190 --> 00:33:09,360 Вы должны распаковать, что Данные из этого окна. 641 00:33:09,360 --> 00:33:15,870 >> Так что это вроде как я-- Представьте, что вы есть коробка, и он содержит что-то. 642 00:33:15,870 --> 00:33:18,490 И то, что вам нужно сделать, это, чтобы задать вопрос, 643 00:33:18,490 --> 00:33:22,800 это возможно, что эта коробка на самом деле содержит данные, которые я ищу? 644 00:33:22,800 --> 00:33:28,180 Если это так, то тянуть, что из данных и положить его в эту переменную существующего. 645 00:33:28,180 --> 00:33:32,080 Если нет, то я просто должны игнорировать содержимое этой рамки 646 00:33:32,080 --> 00:33:34,310 вообще потому, что он буквально не содержит ничего. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Есть вопросы по этому поводу? 649 00:33:40,400 --> 00:33:44,430 Хорошо, давайте отойдем от этого вроде основе командной строки вещь 650 00:33:44,430 --> 00:33:47,610 и начать смотреть на некоторые технологии 651 00:33:47,610 --> 00:33:53,060 что Xcode предоставляет нам в виде детских площадок. 652 00:33:53,060 --> 00:33:56,669 Так что много Возможность здесь с Swift. 653 00:33:56,669 --> 00:33:59,210 И если вы откроете Xcode и его спрашивает вас, что вы хотите сделать, 654 00:33:59,210 --> 00:34:01,340 Вы можете открыть площадка и просто поиграть 655 00:34:01,340 --> 00:34:06,200 с большим количеством различных структур и аспекты языка 656 00:34:06,200 --> 00:34:11,800 прежде чем даже начать касаясь IOS SDK или Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Так что это так, давайте скажем, что я have-- У меня есть относительно надуманный пример 658 00:34:15,670 --> 00:34:18,460 здесь, но медведь со мной, как мы вроде от того, работают через этот пример. 659 00:34:18,460 --> 00:34:22,639 Давайте предположим, что мы должны сделать много экспонент с фиксированной стоимостью, 660 00:34:22,639 --> 00:34:26,397 как мы знаем, что мы собираемся нужно сделать много квадратных полномочий, например. 661 00:34:26,397 --> 00:34:28,980 Итак, мы собираемся, чтобы занять некоторое значение х, мы собираемся возведем в квадрат 662 00:34:28,980 --> 00:34:30,540 мы собираемся занять некоторое значение у, и мы собираемся возвести в квадрат его. 663 00:34:30,540 --> 00:34:31,780 Так далее, и так далее. 664 00:34:31,780 --> 00:34:35,549 >> Теперь мы можем на самом деле просто создать Мощность 2 функции для этого, не так ли? 665 00:34:35,549 --> 00:34:37,090 Таким образом, мы бы создать власть 2 функции. 666 00:34:37,090 --> 00:34:38,600 Мы принимаем в два раза. 667 00:34:38,600 --> 00:34:41,489 Мы output-- или мы будем вернуть двойную тип. 668 00:34:41,489 --> 00:34:46,159 Мы возьмем этот результат а затем в два раза 669 00:34:46,159 --> 00:34:52,040 то, что мы на самом деле взять результаты, которые был инициализирован к значению одного из них, 670 00:34:52,040 --> 00:34:53,090 и умножить его на х. 671 00:34:53,090 --> 00:34:56,540 Таким образом, в сущности, мы имеем х раз х здесь. 672 00:34:56,540 --> 00:35:01,860 >> И так, то я могу то, как мы могли бы ожидать, возьми это, запустите мощностью 2, 673 00:35:01,860 --> 00:35:03,680 обеспечить ему некоторые данные, я люблю 2.0. 674 00:35:03,680 --> 00:35:05,756 И мы получаем, чтобы увидеть результаты здесь 4,0. 675 00:35:05,756 --> 00:35:09,200 Запустите силу 2 на 3,2 и мы получить, чтобы увидеть наш результат 10,24. 676 00:35:09,200 --> 00:35:10,840 До сих пор так хорошо, не так ли? 677 00:35:10,840 --> 00:35:12,070 Теперь мы думаем, ну и ладно. 678 00:35:12,070 --> 00:35:15,530 Теперь я на самом деле нужно сделать много полномочий 3. 679 00:35:15,530 --> 00:35:19,180 Так что я буду копировать вставить весь этот код, изменить имя функции из 680 00:35:19,180 --> 00:35:24,440 Мощность 2 к власти 3, и все будет таким же, за исключением этого значения 681 00:35:24,440 --> 00:35:26,740 здесь, это диапазон от 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Таким образом, вместо того, чтобы повторять Этот цикл в два раза, 683 00:35:29,590 --> 00:35:31,880 Я хочу повторить этот цикл три раза. 684 00:35:31,880 --> 00:35:36,330 Так что я просто изменить это значение от 1 3-- или, скорее, от 2 до 3. 685 00:35:36,330 --> 00:35:39,230 Итак, еще раз, и тот же код, это единственное изменение. 686 00:35:39,230 --> 00:35:40,080 Теперь это тоже работает. 687 00:35:40,080 --> 00:35:43,860 Мощность 3 приводится в некотором значении 2. 688 00:35:43,860 --> 00:35:44,420 Мы получаем 8. 689 00:35:44,420 --> 00:35:45,370 Так 2 кубе. 690 00:35:45,370 --> 00:35:48,060 И 3,2 кубе составляет 32,768. 691 00:35:48,060 --> 00:35:50,597 И до сих пор так хорошо, не так ли? 692 00:35:50,597 --> 00:35:52,930 Но надеюсь, это немного немного красного флага для вас 693 00:35:52,930 --> 00:35:55,530 в том, что теперь у нас есть некоторое дублирование кода 694 00:35:55,530 --> 00:35:58,800 для некоторых очень незначительные, за исключением переход от одного к другому. 695 00:35:58,800 --> 00:36:02,170 Так есть ли какой-то способ, что мы могли бы упростить 696 00:36:02,170 --> 00:36:06,080 Эта проблема, где мы можем на самом деле, во время выполнения, выяснить некоторые, 697 00:36:06,080 --> 00:36:11,320 предоставить нам какую-то функцию, которая имеет Именно сила, что мы хотим. 698 00:36:11,320 --> 00:36:13,960 >> И есть эта идея затворы, которые, действительно, очень 699 00:36:13,960 --> 00:36:18,180 важно в контексте Свифта, и во многих других языках. 700 00:36:18,180 --> 00:36:21,580 Но, наверное, вы увидите он использовал более, что в Swift 701 00:36:21,580 --> 00:36:23,650 потому что она встроена в языке 702 00:36:23,650 --> 00:36:28,280 чем вы будете в другой также современные языки. 703 00:36:28,280 --> 00:36:31,140 Таким образом, идея закрытия это, то, что мы 704 00:36:31,140 --> 00:36:35,430 может иметь функцию, которая предназначается для быть общая функция, общий питания 705 00:36:35,430 --> 00:36:36,860 функции. 706 00:36:36,860 --> 00:36:41,010 >> И эта функция будет принимать этот показатель, что мы на самом деле 707 00:36:41,010 --> 00:36:42,990 хотите создать. 708 00:36:42,990 --> 00:36:46,550 Так, например, самый первый Например, мы хотели мощность 2. 709 00:36:46,550 --> 00:36:50,050 Таким образом, мы бы обеспечить власть а затем в скобках 2. 710 00:36:50,050 --> 00:36:52,490 А теперь обратите внимание, что Это на самом деле возвращает. 711 00:36:52,490 --> 00:36:57,680 Это принимает ввод праймера называется у, что представляет собой целое число, 712 00:36:57,680 --> 00:37:03,090 и возвращает этот сумасшедший смотрит вещь в parentheses-- скобках 713 00:37:03,090 --> 00:37:06,230 Двухместный а затем двойную стрелку. 714 00:37:06,230 --> 00:37:10,270 >> Что это означает, что я собирается вернуться функцию. 715 00:37:10,270 --> 00:37:13,510 Я не возвращался Другой тип данных, я 716 00:37:13,510 --> 00:37:16,350 фактически возвращает функцию который имеет этот параметр, который 717 00:37:16,350 --> 00:37:22,680 принимает двойной качестве входных данных и выводит дважды в качестве возвращаемого значения. 718 00:37:22,680 --> 00:37:29,750 И в результате, потому что теперь я назвал мощность, переходя в некоторое значение для у, 719 00:37:29,750 --> 00:37:32,280 и я создаю этот другой function-- обратите внимание, что есть 720 00:37:32,280 --> 00:37:35,980 Еще одна функция, который создается внутри this--, что я делаю 721 00:37:35,980 --> 00:37:37,830 , я может изменить это значение, что одна 722 00:37:37,830 --> 00:37:41,010 Значение, которое я изменил от 2 до 3, теперь я сделать это у. 723 00:37:41,010 --> 00:37:42,500 >> И это сохраняется. 724 00:37:42,500 --> 00:37:48,530 Таким образом, каждый раз, когда я называю власть из, по существу, что происходит 725 00:37:48,530 --> 00:37:51,030 является то, что я получаю вернулся функцию. 726 00:37:51,030 --> 00:37:54,310 Обратите внимание, что здесь я определил Новая переменная называется квадратом. 727 00:37:54,310 --> 00:37:59,340 Я установил его равным силе, условии, что это значение 2 к власти. 728 00:37:59,340 --> 00:38:02,030 И то, что это возвращается функцией. 729 00:38:02,030 --> 00:38:05,970 Так площади, переменная квадрат, теперь функции типа 730 00:38:05,970 --> 00:38:11,390 что имеет this-- ой прокрутку вверх немного bit--, что имеет эту подпись, 731 00:38:11,390 --> 00:38:15,560 принять двухспальная кровать и выход в два раза. 732 00:38:15,560 --> 00:38:17,330 >> Так что теперь, что я сделал том, что я по существу 733 00:38:17,330 --> 00:38:22,890 создали функцию, называемую квадрат, который принимает любое значение и будут умиротворять ее. 734 00:38:22,890 --> 00:38:24,960 Мы можем видеть, что происходит здесь. 735 00:38:24,960 --> 00:38:29,960 Площадь 3, например, означает, что я собираюсь взять значение 3 и квадрат его. 736 00:38:29,960 --> 00:38:32,010 Так как именно это работает? 737 00:38:32,010 --> 00:38:37,800 Когда я прохожу власть из 2--, когда я пройти 2 в этой власти функции, 738 00:38:37,800 --> 00:38:44,430 эта переменная у является заполняется этим значением 2. 739 00:38:44,430 --> 00:38:46,340 И это своего рода сохраняется в памяти. 740 00:38:46,340 --> 00:38:49,430 Это вроде как состоялась в состояние где-то в компьютере, 741 00:38:49,430 --> 00:38:51,980 мы действительно не волнует, как или, где в данный момент. 742 00:38:51,980 --> 00:38:54,692 >> Но я вернусь эту функцию называется exponentiate. 743 00:38:54,692 --> 00:38:57,400 И опять же, это действительно не имеет значения что эта функция вызывается, 744 00:38:57,400 --> 00:39:01,730 мы действительно можем назвать это что-нибудь, что принимает двойной и возвращает двойной, 745 00:39:01,730 --> 00:39:05,640 но использует это значение у внутри него. 746 00:39:05,640 --> 00:39:09,290 Таким образом, даже если это функция, Эта функция exponentiater это 747 00:39:09,290 --> 00:39:13,600 были возвращены обратно в мой Переменная, которая я позвонил площади, 748 00:39:13,600 --> 00:39:17,980 он содержится в нем это понятие о том, что у был. 749 00:39:17,980 --> 00:39:19,070 И он помнит это. 750 00:39:19,070 --> 00:39:24,810 >> Таким образом, каждый раз, когда я вызова этой функции, что теперь называется квадрат, он использует это. 751 00:39:24,810 --> 00:39:27,990 Но это также означает, что я могу создать еще одну переменную с помощью 752 00:39:27,990 --> 00:39:29,120 отличается мощность. 753 00:39:29,120 --> 00:39:33,240 Так что я могу создать переменную куба для Например, обеспечить к нему силу 3. 754 00:39:33,240 --> 00:39:37,230 Теперь куб на самом деле взять некоторые Значение и куб, и вернуть его. 755 00:39:37,230 --> 00:39:39,570 Итак, мы видим, что я получаю Значение 8 из этого. 756 00:39:39,570 --> 00:39:42,720 >> Но это значение у не имеет изменилось, потому что они 757 00:39:42,720 --> 00:39:44,980 состоится в своего рода независимых переменных. 758 00:39:44,980 --> 00:39:47,480 Они являются своего рода проводится в независимые пространства в памяти. 759 00:39:47,480 --> 00:39:51,290 Так куб всегда будет иметь х к власти 3. 760 00:39:51,290 --> 00:39:55,380 И квадрат всегда будет иметь х к власти 2, который 761 00:39:55,380 --> 00:39:58,470 означает, что площадь будет всегда кв-номера, как я думаю. 762 00:39:58,470 --> 00:40:01,794 И куба всегда будет в кубе номера, как я ожидаю. 763 00:40:01,794 --> 00:40:04,960 Это также означает, что иногда вы можете получить какую-то фанки глядя синтаксиса 764 00:40:04,960 --> 00:40:09,030 где у вас есть власть, по крайней очень Внизу экрана здесь, мощность 5. 765 00:40:09,030 --> 00:40:11,410 И вы проходите в результате. 766 00:40:11,410 --> 00:40:14,670 Вы называете эту функцию, это были возвращены с номером 4. 767 00:40:14,670 --> 00:40:17,440 И так, что по существу это от 4 до пятой степени, 768 00:40:17,440 --> 00:40:20,830 мы можем видеть результаты там. 769 00:40:20,830 --> 00:40:23,690 Со мной до сих пор? 770 00:40:23,690 --> 00:40:26,620 >> Так эта идея называется замыкание, потому что мы в основном делаем 771 00:40:26,620 --> 00:40:30,610 это мы инкапсуляции некоторые данные into-- рода 772 00:40:30,610 --> 00:40:33,050 ограждающих эти данные в функции, и мы 773 00:40:33,050 --> 00:40:36,240 возможность повторного использования этой функции. 774 00:40:36,240 --> 00:40:41,480 Теперь этот синтаксис, хотя может на самом деле упростить большое количество. 775 00:40:41,480 --> 00:40:45,005 И есть много возможности у Свифта для этого упрощения. 776 00:40:45,005 --> 00:40:47,780 И вот что-то последующие реально взглянуть на. 777 00:40:47,780 --> 00:40:51,400 Таким образом, в 7b, например, мы принять это точно такой же код. 778 00:40:51,400 --> 00:40:54,360 >> Но теперь вместо того, на самом деле определить функцию 779 00:40:54,360 --> 00:40:57,910 Внутри этой власти работать и дать ему имя, 780 00:40:57,910 --> 00:41:00,150 а затем вернуть имя этой функции, которая 781 00:41:00,150 --> 00:41:02,357 Затем используется как часть это замыкание, а мы 782 00:41:02,357 --> 00:41:03,440 просто хочу, чтобы упростить его. 783 00:41:03,440 --> 00:41:06,580 Нам не нужно эту функцию, чтобы быть названным. 784 00:41:06,580 --> 00:41:09,760 Так что это понятие анонимная функция, где мы можем затем 785 00:41:09,760 --> 00:41:15,180 принимает в качестве входных данных, в скобках здесь, переменная х, который типа Double. 786 00:41:15,180 --> 00:41:17,250 >> Мы собираемся вернуться типа двойник. 787 00:41:17,250 --> 00:41:19,830 А потом по ключевым словам, п, Начало этой функции. 788 00:41:19,830 --> 00:41:22,180 Так заметить, что все это находится в фигурных скобках 789 00:41:22,180 --> 00:41:25,310 и мы определяем работать здесь анонимно. 790 00:41:25,310 --> 00:41:29,910 Просто простой способ определение ту же самую вещь. 791 00:41:29,910 --> 00:41:30,810 ОК? 792 00:41:30,810 --> 00:41:36,740 Но держись, Swift на самом деле позволяет пойти дальше и упростить еще больше, 793 00:41:36,740 --> 00:41:40,180 потому что действительно мы не все равно, что этот параметр 794 00:41:40,180 --> 00:41:41,700 назвал ни конкретную вещь. 795 00:41:41,700 --> 00:41:48,090 Это действительно может быть названо иначе, и мы все еще можем использовать этот первый параметр. 796 00:41:48,090 --> 00:41:53,800 >> Таким образом, в самом деле есть этот особый Тип данных в анонимных функций, 797 00:41:53,800 --> 00:41:57,710 есть это особое название переменные в анонимных функций 798 00:41:57,710 --> 00:42:00,280 которые начинаются с знак доллара и представляют собой 799 00:42:00,280 --> 00:42:03,785 число параметров, ноль индексированный этой функции. 800 00:42:03,785 --> 00:42:05,410 Так что несколько вещей происходит. 801 00:42:05,410 --> 00:42:08,550 Здесь я собираюсь вернуться, и тогда фигурная скобка представления функции, 802 00:42:08,550 --> 00:42:09,050 не так ли? 803 00:42:09,050 --> 00:42:13,920 >> Заметьте, что я не определили Типы параметров или возвращаемый тип. 804 00:42:13,920 --> 00:42:16,460 Это на самом деле можно сделать вывод, из-за подписи 805 00:42:16,460 --> 00:42:18,360 этой исходной функции. 806 00:42:18,360 --> 00:42:20,500 Таким образом, мы можем устранить что в качестве возможности. 807 00:42:20,500 --> 00:42:25,120 Но также я могу использовать знак доллара нуля до представлять этот первый параметр, это 808 00:42:25,120 --> 00:42:28,200 перешла в этой анонимной функции. 809 00:42:28,200 --> 00:42:31,630 Так что упрощает его еще больше. 810 00:42:31,630 --> 00:42:32,750 ОК? 811 00:42:32,750 --> 00:42:33,820 Все идет нормально? 812 00:42:33,820 --> 00:42:36,980 >> Теперь именно это type-- сделать вас помню этот доллара нулю знак 813 00:42:36,980 --> 00:42:40,130 что мы видели в этом фигурной скобкой что мы только что видели некоторое время 814 00:42:40,130 --> 00:42:43,870 назад в этом Swift шесть например? 815 00:42:43,870 --> 00:42:46,560 Это было прямо здесь. 816 00:42:46,560 --> 00:42:48,430 Обратите внимание, что именно то, что мы смотрим, 817 00:42:48,430 --> 00:42:51,580 является то, что мы прошли в этом расщепленной функции 818 00:42:51,580 --> 00:42:55,140 анонимная функция, что проверяет первый параметр 819 00:42:55,140 --> 00:42:57,830 чтобы увидеть, если он равен символ двоеточие. 820 00:42:57,830 --> 00:42:59,830 И это именно то, что происходит, является то, что все 821 00:42:59,830 --> 00:43:02,320 мы doing-- возвращение Ключевое слово подразумевается 822 00:43:02,320 --> 00:43:05,800 в этом case-- мы возвращаемся Это значение, при котором мы сравниваем 823 00:43:05,800 --> 00:43:10,020 Первый параметр против Этот символ двоеточие. 824 00:43:10,020 --> 00:43:11,730 И так, что-то проясняет это. 825 00:43:11,730 --> 00:43:17,210 И вы увидите эту конструкцию Много в Swift синтаксиса, так что имейте это 826 00:43:17,210 --> 00:43:19,400 в виду, когда вы взглянуть на это. 827 00:43:19,400 --> 00:43:21,970 Теперь мы можем выйти рельсы немного 828 00:43:21,970 --> 00:43:25,460 и действительно работает фантазия, которая показывает даже некоторые более власти Свифта. 829 00:43:25,460 --> 00:43:27,950 Вы даже можете увидеть некоторые из них в типовых кодов. 830 00:43:27,950 --> 00:43:29,790 Так вот почему я собираюсь показать это вам. 831 00:43:29,790 --> 00:43:37,260 >> В основном то, что мы можем сделать, это, во-первых всего, это был своего рода ненужным для меня 832 00:43:37,260 --> 00:43:41,710 осуществить все, что власти Код потому что если вы импортировать Дарвин 833 00:43:41,710 --> 00:43:46,490 библиотека, это на самом деле включает в себя функцию называется военнопленных, что делает это для вас. 834 00:43:46,490 --> 00:43:50,570 Таким образом, мы можем упростить его еще больше и есть нашу функцию питания сейчас просто 835 00:43:50,570 --> 00:43:54,890 быть прекрасный один лайнер, где мы только что вернуть эту анонимную функцию, которая 836 00:43:54,890 --> 00:44:00,780 принимает знак доллара 0 КАК ЕЕ Основание и у как показатель его. 837 00:44:00,780 --> 00:44:02,582 >> Но мы можем получить действительно, действительно фантазии, когда мы 838 00:44:02,582 --> 00:44:04,790 понять, что Свифт много энергии под капотом. 839 00:44:04,790 --> 00:44:07,010 Многие из операторов, мы занимаемся, 840 00:44:07,010 --> 00:44:11,270 Знаки плюс и деление символы и все эти вещи, которые вы обычно 841 00:44:11,270 --> 00:44:15,620 работать с с типами данных на языке программирования, 842 00:44:15,620 --> 00:44:17,600 на самом деле расширяемый у Свифта. 843 00:44:17,600 --> 00:44:21,460 Так что это означает, что в том, что мы можно определить наши собственные операторы. 844 00:44:21,460 --> 00:44:26,020 >> Так что теперь я устал печатать во всем этом POW, а затем скобки, а затем 845 00:44:26,020 --> 00:44:26,520 база. 846 00:44:26,520 --> 00:44:27,520 Я не хочу, чтобы сделать это. 847 00:44:27,520 --> 00:44:30,190 Я действительно хочу, чтобы иметь Оператор, который позволяет мне сделать это. 848 00:44:30,190 --> 00:44:34,510 Так что я могу сказать, Свифт, что я хочу создать оператора, звезду 849 00:44:34,510 --> 00:44:39,472 star-- я, кстати, не может использовать карат потому карат оператор, 850 00:44:39,472 --> 00:44:40,680 делает что-то совсем другое. 851 00:44:40,680 --> 00:44:42,720 Так что я не хочу, чтобы отсортировать из столкновения с этим. 852 00:44:42,720 --> 00:44:45,750 И так, что вы видите в различных языков, в том числе Python, 853 00:44:45,750 --> 00:44:48,810 это как звезда звезда оператора представлять показатели. 854 00:44:48,810 --> 00:44:50,730 >> Так вот единственная причина, почему я сделал это. 855 00:44:50,730 --> 00:44:53,067 И это будет оператор типа инфикс. 856 00:44:53,067 --> 00:44:54,900 И я должен предоставить к нему некоторую информацию 857 00:44:54,900 --> 00:44:58,386 о приоритете в этом Оператор так что левоассоциативны. 858 00:44:58,386 --> 00:45:00,260 Это как относительно высокий приоритет по сравнению 859 00:45:00,260 --> 00:45:02,432 к суммированию или умножение. 860 00:45:02,432 --> 00:45:04,140 Это более высокий приоритет, чем все из них. 861 00:45:04,140 --> 00:45:04,931 Так далее, и так далее. 862 00:45:04,931 --> 00:45:07,410 И тогда я определяю функция, которая на самом деле 863 00:45:07,410 --> 00:45:10,070 диктует, что этот оператор делает. 864 00:45:10,070 --> 00:45:14,150 Так если предположить, что у меня есть левый сторона и правая сторона, 865 00:45:14,150 --> 00:45:17,330 который был бы, возможно, лучше имя переменной для этого. 866 00:45:17,330 --> 00:45:20,690 Левая сторона и правая сторона. 867 00:45:20,690 --> 00:45:26,740 Затем я могу принять это власть Левая часть с правой стороны 868 00:45:26,740 --> 00:45:28,980 и вернуть это значение. 869 00:45:28,980 --> 00:45:30,370 Так что теперь это супер сладкие. 870 00:45:30,370 --> 00:45:33,790 Все, что мы должны сделать, это 2 звезда звезда 3 и это 2 в третьей степени, 871 00:45:33,790 --> 00:45:35,290 и мы получаем значение 8. 872 00:45:35,290 --> 00:45:40,280 2 звезда звезда 10 составляет от 2 до 10-й степени, мы получаем 1024. 873 00:45:40,280 --> 00:45:43,630 >> Так что теперь наша власть функции, что опять-таки разные, 874 00:45:43,630 --> 00:45:47,030 потому что вся идея этого было то, что у нас есть одна функция, которая 875 00:45:47,030 --> 00:45:50,700 всегда имеет какую-то ценность и умножает it-- или, скорее, 876 00:45:50,700 --> 00:45:53,240 занимает показатель, такой же мощности. 877 00:45:53,240 --> 00:45:54,300 Так что теперь это даже проще. 878 00:45:54,300 --> 00:45:57,070 Так что теперь это просто доллар войдите 0 звездообразования у. 879 00:45:57,070 --> 00:46:01,190 Мы даже не придется использовать военнопленных больше. 880 00:46:01,190 --> 00:46:03,020 >> Хорошо, кто потерял? 881 00:46:03,020 --> 00:46:03,700 Делаем ли мы в порядке? 882 00:46:03,700 --> 00:46:05,090 Любые вопросы по этой вещи? 883 00:46:05,090 --> 00:46:05,815 Да? 884 00:46:05,815 --> 00:46:09,500 >> АУДИТОРИЯ: Когда you-- [неразборчиво] фанк сила у двойника. 885 00:46:09,500 --> 00:46:11,441 Итак, когда вы возвращение функции. 886 00:46:11,441 --> 00:46:13,190 DANIEL Armendáriz: Funk сила у двойника. 887 00:46:13,190 --> 00:46:14,270 Ах да, я не знаю, то, что у номера. 888 00:46:14,270 --> 00:46:15,708 К сожалению об этом. 889 00:46:15,708 --> 00:46:19,420 >> Зал: А почему вы возвращения Функция [неразборчиво] корпус. 890 00:46:19,420 --> 00:46:24,214 Разве это не доллар нулю звезда звезда у [неразборчиво] 891 00:46:24,214 --> 00:46:29,710 найти, что оператор с этим возвращение дважды [неразборчиво] в два раза? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL Armendáriz: Итак, давайте мне ответить на ваш вопрос 893 00:46:32,742 --> 00:46:35,950 как я понимаю это, и вы можете сказать мне, если я не понимаю ваш вопрос. 894 00:46:35,950 --> 00:46:42,850 Так что это конструкт, фигурная скобка Знак доллара нулю звезда звезда у, 895 00:46:42,850 --> 00:46:44,280 является функцией. 896 00:46:44,280 --> 00:46:50,080 И он принимает параметр, который представленное этим знаком доллара нулевой. 897 00:46:50,080 --> 00:46:55,830 Ключевое слово возвращения подразумевается в этом очень короткий, анонимный синтаксис функции. 898 00:46:55,830 --> 00:46:57,870 >> Это означает, что по существу О чем это говорит 899 00:46:57,870 --> 00:47:01,270 является то, что я определяю function-- и тогда я буду 900 00:47:01,270 --> 00:47:05,320 просто назвать его something-- где у меня есть некоторое значение у. 901 00:47:05,320 --> 00:47:08,300 У меня есть г, что в два раза. 902 00:47:08,300 --> 00:47:10,750 И я возвращаюсь в два раза. 903 00:47:10,750 --> 00:47:19,010 И у меня есть в этой возвращении y-- извините, Я не должен был назвать это y-- х. 904 00:47:19,010 --> 00:47:20,240 Ах, боже мой, боже мой, боже мой. 905 00:47:20,240 --> 00:47:27,440 X-- nope-- звезда звезда у. 906 00:47:27,440 --> 00:47:29,720 >> Так что это просто Упрощенная версия этого. 907 00:47:29,720 --> 00:47:33,990 И так причина того, что у меня есть доллар знак нуля является то, что с помощью этого корпус 908 00:47:33,990 --> 00:47:41,050 означает, что я больше не придется не вводить военнопленных, или больше не делать 909 00:47:41,050 --> 00:47:45,570 Я должен сделать что-то как 3 звезда звезда 2. 910 00:47:45,570 --> 00:47:48,530 Я могу просто одного Функция называется площадь 911 00:47:48,530 --> 00:47:50,820 что всегда будет иметь некоторое значение в качестве входных данных 912 00:47:50,820 --> 00:47:52,980 а на самом деле вернуться на площадь, что. 913 00:47:52,980 --> 00:47:56,460 >> Так весь смысл закрытия является просто вроде инкапсуляции тот факт, 914 00:47:56,460 --> 00:47:59,920 что я всегда хочу, чтобы использовать у всякий раз, когда Я называю эту функцию, как власть 915 00:47:59,920 --> 00:48:01,710 при принятии этого показателя. 916 00:48:01,710 --> 00:48:04,650 Так возвращаясь затем, функция, которая принимает 917 00:48:04,650 --> 00:48:08,460 двойной, который является базой, и возвращение результата этого показателя 918 00:48:08,460 --> 00:48:10,740 является здесь ключевой. 919 00:48:10,740 --> 00:48:12,790 И это главное отличие. 920 00:48:12,790 --> 00:48:14,430 Был просто немного процветать. 921 00:48:14,430 --> 00:48:17,970 >> Это ничем не отличается по сравнению с предыдущими примерами, 922 00:48:17,970 --> 00:48:20,530 но это было только немного процветать, мы можем на самом деле 923 00:48:20,530 --> 00:48:24,500 создать оператор в Swift и на самом деле делать вещи с ним, 924 00:48:24,500 --> 00:48:26,396 которая является своеобразной круто. 925 00:48:26,396 --> 00:48:27,520 Я ответил на ваш вопрос? 926 00:48:27,520 --> 00:48:28,390 Сладкий. 927 00:48:28,390 --> 00:48:31,350 Что-нибудь еще, прежде чем мы перейдем? 928 00:48:31,350 --> 00:48:33,570 ОК. 929 00:48:33,570 --> 00:48:36,430 >> Теперь этот вид просит Вопрос в том, that-- Ну ладно, 930 00:48:36,430 --> 00:48:40,870 Теперь у нас есть возможность для Функции должны быть возвращены. 931 00:48:40,870 --> 00:48:48,950 Можем ли мы также передаем функции как данные или в качестве параметров других функций? 932 00:48:48,950 --> 00:48:50,710 И в самом деле мы можем. 933 00:48:50,710 --> 00:48:53,480 Так что давайте говорить, что у нас есть все тот же код. 934 00:48:53,480 --> 00:48:56,120 У нас есть квадратный переменную что будут умиротворять этот код. 935 00:48:56,120 --> 00:48:59,320 И у нас есть переменная куб что будет куб некоторые данные. 936 00:48:59,320 --> 00:49:02,440 И мы действительно хотим, чтобы применить в широком диапазоне чисел. 937 00:49:02,440 --> 00:49:06,870 >> Итак, что мы могли бы попытаться сделать, Конечно, что, безусловно, справедливо, 938 00:49:06,870 --> 00:49:15,430 это пройти по этому списку номеров и применять мои функции квадратных и кубических 939 00:49:15,430 --> 00:49:22,270 и получить два новых списков в качестве результатов которые это первоначальный список квадрат 940 00:49:22,270 --> 00:49:24,970 и в кубе, соответственно. 941 00:49:24,970 --> 00:49:26,880 Вполне приемлемо. 942 00:49:26,880 --> 00:49:29,130 Но то, что вещь, которая здесь мы видим, что у нас есть, 943 00:49:29,130 --> 00:49:31,310 снова, дублирование кода. 944 00:49:31,310 --> 00:49:34,310 И есть, возможно, возможность для нас, чтобы упростить это немного. 945 00:49:34,310 --> 00:49:41,260 Что, если бы был способ для нас на самом деле всегда перебрать некоторое список 946 00:49:41,260 --> 00:49:45,450 и просто переходят на этот волшебный функционировать переменную, которая 947 00:49:45,450 --> 00:49:47,350 представляет собой функцию что мы хотим применить 948 00:49:47,350 --> 00:49:50,336 для каждого элемента в этом списке. 949 00:49:50,336 --> 00:49:53,210 Это поднимает концепцию о том, что называются функции высшего порядка. 950 00:49:53,210 --> 00:49:57,150 И это, по существу, то, что это является, то, что мы можем создать функцию. 951 00:49:57,150 --> 00:50:00,210 >> И в этом случае она называется Mapper, просто чтобы дать ему имя, просто 952 00:50:00,210 --> 00:50:02,510 отображение над каждой один элемент в списке. 953 00:50:02,510 --> 00:50:06,191 Где я возьму список и я взять функцию. 954 00:50:06,191 --> 00:50:08,440 И, что функции, конечно, имеет определенную подпись. 955 00:50:08,440 --> 00:50:11,980 Он принимает в качестве параметра вдвое и это будет выход в два раза. 956 00:50:11,980 --> 00:50:14,310 И весь результат Эта функция будет 957 00:50:14,310 --> 00:50:18,921 быть новый список, который имеет тип Double. 958 00:50:18,921 --> 00:50:19,420 ОК? 959 00:50:19,420 --> 00:50:22,650 >> И то, что я собираюсь сделать является применение этой функции F 960 00:50:22,650 --> 00:50:24,960 для каждого элемента в моем списке. 961 00:50:24,960 --> 00:50:30,280 И reply-- и довольно вернуться этот новый Список, как результат, который на самом деле круто. 962 00:50:30,280 --> 00:50:31,820 Теперь я могу передать функции вокруг. 963 00:50:31,820 --> 00:50:35,290 И эта идея более высокого порядка функции, что действительно важно. 964 00:50:35,290 --> 00:50:39,260 И это преобразователь на самом деле просто Реализация бедняка 965 00:50:39,260 --> 00:50:43,130 функции, которые встроены в Swift называется карту. 966 00:50:43,130 --> 00:50:45,690 И это делает именно это, может быть, даже немного лучше. 967 00:50:45,690 --> 00:50:48,260 >> Это просто своего рода общим, упрощенная версия, что 968 00:50:48,260 --> 00:50:51,270 позволяет нам увидеть концепция, которая применяется здесь. 969 00:50:51,270 --> 00:50:54,630 Теперь посмотрим на то, как я может на самом деле применить свои площади 970 00:50:54,630 --> 00:50:57,850 и мои куб функции в этом списке чисел. 971 00:50:57,850 --> 00:50:58,780 Я веду свой Mapper. 972 00:50:58,780 --> 00:51:00,280 Я представить ему мой список чисел. 973 00:51:00,280 --> 00:51:02,155 Я представить ему на функция, которая собирается 974 00:51:02,155 --> 00:51:04,170 применять к каждому из этих показателей. 975 00:51:04,170 --> 00:51:07,120 И это будет Выход в результате. 976 00:51:07,120 --> 00:51:11,810 И я буду получать, чтобы увидеть, что я в квадрате и в кубе мои номера в результате. 977 00:51:11,810 --> 00:51:14,660 >> И, конечно, картографа состоится любой вид анонимной функции. 978 00:51:14,660 --> 00:51:17,640 Мы даже можем видеть, что я создал Новый анонимную функцию, которая 979 00:51:17,640 --> 00:51:20,220 просто принимает какой-либо параметр и делит его на 2. 980 00:51:20,220 --> 00:51:24,340 И мы видим, что я, в самом деле, разделить мой список 2 вместо этого. 981 00:51:24,340 --> 00:51:25,250 Прохладный? 982 00:51:25,250 --> 00:51:27,340 Все идет нормально? 983 00:51:27,340 --> 00:51:29,650 Ладно, теперь давайте вернуться к этой идее. 984 00:51:29,650 --> 00:51:36,160 Давайте реализуем это еще в Контекст зачетную книжку. 985 00:51:36,160 --> 00:51:41,860 >> И если я это сделаю, мы можем видеть, что я могу применяют широкий спектр этих options-- 986 00:51:41,860 --> 00:51:44,330 или большое разнообразие них Функции высшего порядка 987 00:51:44,330 --> 00:51:51,450 на самом деле упростить свою способность делать Разнообразие вещей на списки номеров. 988 00:51:51,450 --> 00:51:53,660 Так, например, если взять список номеров, 989 00:51:53,660 --> 00:51:57,060 один из высших функций порядка что существует, называется уменьшить. 990 00:51:57,060 --> 00:52:00,080 Что снизить делает, а чем карты, сводится будет 991 00:52:00,080 --> 00:52:03,710 принять два элемента в списке, займет некоторое функцию, которая 992 00:52:03,710 --> 00:52:07,420 сравнивает два элемента Список, и он будет затем 993 00:52:07,420 --> 00:52:09,610 вроде output-- Выход из этой функции 994 00:52:09,610 --> 00:52:13,790 будет один элемент, который Вы тогда по сравнению с другими. 995 00:52:13,790 --> 00:52:18,190 >> Таким образом, вы могли бы использовать это на самом деле сумма чисел в вашем списке. 996 00:52:18,190 --> 00:52:20,640 Например, если у вас Список 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 вы берете первые элементы, 1 и 2. 998 00:52:22,940 --> 00:52:27,270 Вы можете обратиться к ней дополнение функция, которая принимает эти два элемента 999 00:52:27,270 --> 00:52:30,980 и выплевывает один из тех элементов, которая была бы значение 3. 1000 00:52:30,980 --> 00:52:35,684 Затем мы берем это значение 3 с рядом элемент списка, подвести тех, два, 1001 00:52:35,684 --> 00:52:37,100 а затем продолжать идти вниз по списку. 1002 00:52:37,100 --> 00:52:40,410 >> Мы сокращение список до одного значения. 1003 00:52:40,410 --> 00:52:42,700 И так уж случилось, что символ плюс 1004 00:52:42,700 --> 00:52:44,670 является оператор, как мы только что видели. 1005 00:52:44,670 --> 00:52:47,500 Этот оператор на самом деле это функция, которая 1006 00:52:47,500 --> 00:52:53,100 имеет именно этот список, который мы хотел, а эти свойства 1007 00:52:53,100 --> 00:52:54,770 что мы хотели бы. 1008 00:52:54,770 --> 00:52:56,760 Поэтому я призываю вас, чтобы взгляните на это. 1009 00:52:56,760 --> 00:52:59,290 Я хочу, чтобы отсортировать хода на некоторых из этого кода 1010 00:52:59,290 --> 00:53:05,330 так что мы можем реально взглянуть на некоторые реально существующее, истинная Swift в Xcode, 1011 00:53:05,330 --> 00:53:06,880 в развитии IOS. 1012 00:53:06,880 --> 00:53:08,630 Но взгляните на это и посмотреть, если вы можете 1013 00:53:08,630 --> 00:53:11,171 разобрать через то, что происходит на с некоторыми из этих более высокого порядка 1014 00:53:11,171 --> 00:53:13,790 функции, включая фильтр, снижение, а вы даже 1015 00:53:13,790 --> 00:53:17,060 см где-то здесь карту, а также. 1016 00:53:17,060 --> 00:53:17,910 Это прямо здесь. 1017 00:53:17,910 --> 00:53:20,410 Где он будет принимать последовательность сортов и он будет на самом деле 1018 00:53:20,410 --> 00:53:24,230 сопоставить их с помощью конструкции переключателя, которые Вы могли бы признать от C, 1019 00:53:24,230 --> 00:53:27,640 но на самом деле это гораздо больше, мощный, чем конструкции переключателя 1020 00:53:27,640 --> 00:53:29,810 что мы имеем в С 1021 00:53:29,810 --> 00:53:31,930 >> И мы будем применять, что каждый элемент в списке 1022 00:53:31,930 --> 00:53:34,540 и на самом деле обеспечивают Письмо оценка каждого 1023 00:53:34,540 --> 00:53:40,780 из тех марок, используя все эти понятия что мы только что говорили раньше. 1024 00:53:40,780 --> 00:53:44,760 Теперь давайте обойти всего за минуту и ​​разговоры о структур. 1025 00:53:44,760 --> 00:53:49,680 И так Структуры являются ожидания в C, что мы смогли определить новый тип данных. 1026 00:53:49,680 --> 00:53:53,590 Структуры существуют в Свифт. 1027 00:53:53,590 --> 00:53:58,980 И так же много других конструкций называемые перечисления и классы, которые на самом деле 1028 00:53:58,980 --> 00:54:01,175 принять эту идею совершенно другой уровень. 1029 00:54:01,175 --> 00:54:05,300 >> И в основном это просто способ определения нового типа данных. 1030 00:54:05,300 --> 00:54:11,010 Так что если вы get-- если вы приехали по классу или структур или перечислений, 1031 00:54:11,010 --> 00:54:13,290 не пугайтесь этого. 1032 00:54:13,290 --> 00:54:16,280 Это просто способ определения некоторые новые особенности тип данных. 1033 00:54:16,280 --> 00:54:20,230 И это очень важно, когда мы говорим о развитии IOS приложения 1034 00:54:20,230 --> 00:54:24,630 потому что все, что существует в приложение IOS 1035 00:54:24,630 --> 00:54:27,460 по существу объектом некоторого вида. 1036 00:54:27,460 --> 00:54:31,980 И объект в основном класс или перечисление или структурой. 1037 00:54:31,980 --> 00:54:34,760 >> Таким образом, в данном случае я определении нового типа данных 1038 00:54:34,760 --> 00:54:37,740 что я звоню оценку это некоторые свойства, в том числе 1039 00:54:37,740 --> 00:54:41,040 Имя и последовательность классов. 1040 00:54:41,040 --> 00:54:43,470 Так один тип оценки что я мог бы иметь в виду 1041 00:54:43,470 --> 00:54:44,760 бы викторины, например. 1042 00:54:44,760 --> 00:54:48,180 Я хотел бы иметь взносов, которая была викторина 1043 00:54:48,180 --> 00:54:51,460 и что было множество классов связано с тем, для викторины одной, 1044 00:54:51,460 --> 00:54:52,840 Тест два, так далее, и так далее. 1045 00:54:52,840 --> 00:54:55,720 >> Или я мог бы иметь различный тип оценки для задачи множеств. 1046 00:54:55,720 --> 00:54:56,650 И я могу делать. 1047 00:54:56,650 --> 00:54:59,860 Я могу на самом деле есть Функции в рамках этого типа 1048 00:54:59,860 --> 00:55:02,645 данных, которые теперь называются методами. 1049 00:55:02,645 --> 00:55:04,520 Так что если вы когда-либо видели Метод слово, это действительно 1050 00:55:04,520 --> 00:55:08,190 это просто функция, которая применяется в очень определенного класса, 1051 00:55:08,190 --> 00:55:10,100 или очень конкретного типа данных. 1052 00:55:10,100 --> 00:55:12,350 Это позволяет нам изменять данные в. 1053 00:55:12,350 --> 00:55:15,510 >> Итак, другими словами, если я хочу, чтобы добавить класс к моей оценкой, 1054 00:55:15,510 --> 00:55:18,630 то все, что нужно сделать, это добавить счет, который был введен 1055 00:55:18,630 --> 00:55:22,660 с помощью этой функции к мой внутреннее свойство. 1056 00:55:22,660 --> 00:55:25,880 Там еще один аккуратный конструкция здесь у Свифта, который это точка точка точка 1057 00:55:25,880 --> 00:55:31,780 оператор, который означает, что результаты могут сейчас принимаю любое количество целых чисел. 1058 00:55:31,780 --> 00:55:33,940 И результаты будут массив целых чисел, 1059 00:55:33,940 --> 00:55:39,030 были переданы на моей функции, которые означает, что я могу делать вещи, как это. 1060 00:55:39,030 --> 00:55:42,360 >> Что я могу сделать добавить оценки и просто обеспечить произвольные числа целых чисел в нем 1061 00:55:42,360 --> 00:55:47,420 и действительно будет предоставлено массив из этих ценностей в моей функции 1062 00:55:47,420 --> 00:55:50,270 или мой метод, как это имеет место. 1063 00:55:50,270 --> 00:55:54,040 Теперь это важно, потому что все в Xcode, все в ИО, 1064 00:55:54,040 --> 00:55:56,250 на самом деле объект. 1065 00:55:56,250 --> 00:55:59,630 Так что имейте это в виду когда мы бюст открытый Xcode 1066 00:55:59,630 --> 00:56:04,890 и пропустить вперед за прошивкой версии два и три 1067 00:56:04,890 --> 00:56:08,820 и на самом деле идти на версии четыре. 1068 00:56:08,820 --> 00:56:11,940 >> И опять же, все это будет будут размещены на странице семинара. 1069 00:56:11,940 --> 00:56:16,980 IOS четыре является своего рода полномасштабной реализация очень простой приложение. 1070 00:56:16,980 --> 00:56:23,920 И то, что это приложение делает это загружает пользовательский интерфейс, который выглядит следующим образом. 1071 00:56:23,920 --> 00:56:28,680 Опять же, если мы нажмем на раскадровке мы можем видеть, что это, как он выглядит. 1072 00:56:28,680 --> 00:56:31,320 Это интерфейс. 1073 00:56:31,320 --> 00:56:33,676 Он имеет название на самом верху. 1074 00:56:33,676 --> 00:56:34,800 Я назвал его веб-галереи. 1075 00:56:34,800 --> 00:56:38,400 >> В середине есть элемент называется вид изображения пользовательского интерфейса. 1076 00:56:38,400 --> 00:56:41,340 А внизу есть Панель инструментов с помощью одной кнопки, что 1077 00:56:41,340 --> 00:56:46,850 имеет эластичные пространства, которые позволяют его центр в середине этой панели инструментов. 1078 00:56:46,850 --> 00:56:51,780 И то, что происходит, что, когда это загружает его скачивает файл JSON, что это 1079 00:56:51,780 --> 00:56:55,540 содержащиеся на сервере в другом месте, грамматический разбор JSON файл, 1080 00:56:55,540 --> 00:56:58,130 и файл JSON выглядит немного как это. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 Файл JSON выглядит так. 1083 00:57:06,230 --> 00:57:08,650 Там оно и есть. 1084 00:57:08,650 --> 00:57:11,730 >> Он имеет название альбома и она имеет множество фотографий. 1085 00:57:11,730 --> 00:57:13,490 Каждый из этих фотографий есть имя, а также 1086 00:57:13,490 --> 00:57:19,460 URL сами, которые представляют JPEG версия этой отдельной фотографии. 1087 00:57:19,460 --> 00:57:24,780 Так, что случилось, что, когда эта программа Грузы, он загружает файл в формате JSON, 1088 00:57:24,780 --> 00:57:30,590 анализирует его, кладет все это в эквивалент массива в ИО 1089 00:57:30,590 --> 00:57:33,020 приложение развития, который является NSArray. 1090 00:57:33,020 --> 00:57:37,520 И тогда я могу затем загрузить Эти данные в приложение 1091 00:57:37,520 --> 00:57:41,100 и загрузить его на моем экране. 1092 00:57:41,100 --> 00:57:44,760 >> Существует образ, который был загружен с помощью кнопки в самом низу. 1093 00:57:44,760 --> 00:57:49,190 Если я нажимаю Получить Следующая, тогда тянет этот образ из интернета 1094 00:57:49,190 --> 00:57:53,370 и заменяет это изображение по мнению изображений UI. 1095 00:57:53,370 --> 00:57:57,820 Таким образом, вы можете скачать это и на самом деле взглянуть на него на вашем компьютере. 1096 00:57:57,820 --> 00:58:00,940 И строить его и на самом деле скомпилировать его на ваше устройство. 1097 00:58:00,940 --> 00:58:04,710 Но по существу процесс был это, создайте storyboard-- 1098 00:58:04,710 --> 00:58:08,080 или, скорее, не create-- но выбрать раскадровки. 1099 00:58:08,080 --> 00:58:15,030 А на самом деле we'll-- если вы не mind-- мы будем принимать только несколько секунд 1100 00:58:15,030 --> 00:58:18,390 на самом деле показать вам, как это было сделано. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Точно так же, что, как мы можем на самом деле достижения этой цели производится немного больше 1103 00:58:27,820 --> 00:58:28,360 очевидной. 1104 00:58:28,360 --> 00:58:30,651 Одноместный Просмотр приложения, я буду называть этот семинар 1105 00:58:30,651 --> 00:58:35,330 четыре представляющий это частности число. 1106 00:58:35,330 --> 00:58:36,335 Сохраните его на рабочем столе. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 Хорошо, собирается нажать на раскадровке. 1109 00:58:42,110 --> 00:58:47,030 И то, что я собираюсь сделать чтобы найти мой взгляд изображения, 1110 00:58:47,030 --> 00:58:50,940 перетащите его на моем пользователь интерфейс и в центр. 1111 00:58:50,940 --> 00:58:54,850 Теперь просто центрирования его, к сожалению, не собирается делать кучу, 1112 00:58:54,850 --> 00:58:58,680 для экрана, кроме что это точный размер. 1113 00:58:58,680 --> 00:59:03,950 >> Таким образом, мы убеждаемся, что, нажав на этой двойной вещи окружности, 1114 00:59:03,950 --> 00:59:08,290 снижения этого поп меню здесь и изменения 1115 00:59:08,290 --> 00:59:11,110 чтобы просмотреть, где мы на самом деле получить шанс увидеть, как 1116 00:59:11,110 --> 00:59:13,530 это будет на самом деле смотреть на других устройствах. 1117 00:59:13,530 --> 00:59:16,500 Как мы видим, мы даже не увидеть его на этом конкретном случае. 1118 00:59:16,500 --> 00:59:18,500 Так что я собираюсь закрыть это сейчас. 1119 00:59:18,500 --> 00:59:22,100 >> И я собираюсь выбрать этот значок вниз на очень 1120 00:59:22,100 --> 00:59:23,910 Нижняя часть экрана. 1121 00:59:23,910 --> 00:59:26,584 Это говорит Разрешение Автокомпоновка вопросы. 1122 00:59:26,584 --> 00:59:28,000 К сожалению, это отрезать внизу. 1123 00:59:28,000 --> 00:59:36,360 Но если я нажимаю на что, что я получить эта поп-up-- уйти. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Что я получаю это всплывающее меню, которое позволяет мне добавить недостающие ограничений. 1126 00:59:51,220 --> 00:59:53,780 И тому, чтобы он Затем рода заблокировать его 1127 00:59:53,780 --> 00:59:56,640 в центральной части Экран, как я мог бы ожидать. 1128 00:59:56,640 --> 01:00:00,520 >> Теперь для того, чтобы получить эту кнопку на верх ее, мне нужно идти в редакцию. 1129 01:00:00,520 --> 01:00:05,010 Перейти к Вставить в систему и нажмите Навигационный контроллер. 1130 01:00:05,010 --> 01:00:08,900 То, что это будет делать то, что будет добавить Весь этот другой компонент к нему, 1131 01:00:08,900 --> 01:00:11,310 но на самом деле ссылаются это обратно к моей первоначальной UI. 1132 01:00:11,310 --> 01:00:14,450 И детали, опять же, мы не действительно нужно заботиться о прямо сейчас. 1133 01:00:14,450 --> 01:00:16,710 Но я хочу, чтобы иметь Панель инструментов в самом низу. 1134 01:00:16,710 --> 01:00:18,530 Так что я буду проверка показывает, панель инструментов. 1135 01:00:18,530 --> 01:00:21,870 >> И это дает в моей точки зрения, которые сейчас где-то еще, 1136 01:00:21,870 --> 01:00:23,900 мы видим, это связано сюда. 1137 01:00:23,900 --> 01:00:28,710 Это в настоящее время обеспечивает панель инструментов В нижней части моей UI. 1138 01:00:28,710 --> 01:00:34,770 Так что теперь, вместо выбора просмотр изображений, я могу найти ярлык, 1139 01:00:34,770 --> 01:00:41,140 или, скорее, toolbar-- давайте посмотрим, где это? 1140 01:00:41,140 --> 01:00:41,890 Как он называется? 1141 01:00:41,890 --> 01:00:49,760 Пункт button-- bar-- item-- sorry-- панель кнопок пункт. 1142 01:00:49,760 --> 01:00:54,590 Plop что там и применить пару гибких пространства по обе стороны 1143 01:00:54,590 --> 01:00:57,429 на самом деле центр, который. 1144 01:00:57,429 --> 01:00:58,970 Так что теперь я создал свой пользовательский интерфейс, в основном. 1145 01:00:58,970 --> 01:01:01,428 И я могу дать ему имя, Двойной щелчок на самом верху 1146 01:01:01,428 --> 01:01:04,880 здесь и говорить веб-галереи и так далее. 1147 01:01:04,880 --> 01:01:08,100 Теперь снова, это элементы которые существуют сами по себе. 1148 01:01:08,100 --> 01:01:10,400 И у меня есть для подключения им мой код, который 1149 01:01:10,400 --> 01:01:14,297 Что я могу сделать, снова принося до этого двойного значком в виде круга, 1150 01:01:14,297 --> 01:01:15,380 изменения от просмотра. 1151 01:01:15,380 --> 01:01:18,950 Что, кстати, сейчас мы видим, является красиво по центру и будет хорошо смотреться 1152 01:01:18,950 --> 01:01:23,720 на различных устройствах. 1153 01:01:23,720 --> 01:01:27,280 >> Переключитесь на автоматический, который будет воспитывать код ViewController. 1154 01:01:27,280 --> 01:01:29,030 А теперь эта часть очень важна. 1155 01:01:29,030 --> 01:01:34,590 Для того, чтобы подключить их два элемента, чтобы ваш код пользовательского интерфейса, 1156 01:01:34,590 --> 01:01:36,680 При выборе пункта, что Вы хотите подключить. 1157 01:01:36,680 --> 01:01:39,570 Таким образом, в этом случае мы на самом деле хотите, чтобы закодировать 1158 01:01:39,570 --> 01:01:43,520 изменить имидж, которая содержится в пределах этого представления изображения пользовательского интерфейса. 1159 01:01:43,520 --> 01:01:47,070 Так что, если вы контролируете нажмите от Посмотреть изображение и перетащите, 1160 01:01:47,070 --> 01:01:51,960 Вы заметите, что вы получаете небольшой бар, когда вы отпускаете все это поп- 1161 01:01:51,960 --> 01:01:53,550 до произойдет. 1162 01:01:53,550 --> 01:01:56,470 >> И он говорит, что мы будем создать подключение. 1163 01:01:56,470 --> 01:01:59,300 А отсюда я хочу дать его имя, что-то вроде галереи. 1164 01:01:59,300 --> 01:02:00,240 Нажмите Enter. 1165 01:02:00,240 --> 01:02:03,040 И это на самом деле обеспечивает переменная с именем галерея 1166 01:02:03,040 --> 01:02:08,600 что я могу затем ссылаться в своем коде сменить имидж, например. 1167 01:02:08,600 --> 01:02:10,430 Так как же, что код на самом деле выглядит? 1168 01:02:10,430 --> 01:02:13,030 Ну опять же, я не хочу, чтобы тратить слишком много времени на это. 1169 01:02:13,030 --> 01:02:15,430 И я призываю вас скачать и посмотреть. 1170 01:02:15,430 --> 01:02:18,330 Но один из самых Важным аспектом является код 1171 01:02:18,330 --> 01:02:20,980 что на самом деле получает изображение. 1172 01:02:20,980 --> 01:02:26,470 >> Таким образом, в данном случае я хочу чтобы получить в течение моих фотографий 1173 01:02:26,470 --> 01:02:28,520 массив, который содержится в моем классе. 1174 01:02:28,520 --> 01:02:33,390 Я хочу задать имя и URL который был разобран из этого JSON. 1175 01:02:33,390 --> 01:02:39,810 На самом деле спросите устройство, чтобы получить URL, чтобы принести URL из этого, 1176 01:02:39,810 --> 01:02:44,060 а затем выборки данных из содержимое этого URL. 1177 01:02:44,060 --> 01:02:49,430 Тогда преобразования данных в изображение путем пропускания его в изображение пользовательского интерфейса. 1178 01:02:49,430 --> 01:02:52,880 Итак, еще раз, это все разные типы объектов, различных типов классов. 1179 01:02:52,880 --> 01:02:58,410 >> И тогда я могу затем установить мой gallery.image равно этих данных. 1180 01:02:58,410 --> 01:03:00,750 И это своего рода мяса его, что на самом деле то 1181 01:03:00,750 --> 01:03:08,250 в состоянии изменить изменить данные из-- фотография от одного к другому. 1182 01:03:08,250 --> 01:03:10,660 Итак, еще раз, надеюсь, теперь много конструкций 1183 01:03:10,660 --> 01:03:12,240 сделает немного больше смысла. 1184 01:03:12,240 --> 01:03:15,260 Обратите внимание, что есть какая-то восклицательных знаков здесь. 1185 01:03:15,260 --> 01:03:19,810 Восклицательные знаки являются по существу связаны с дополнительными опциями. 1186 01:03:19,810 --> 01:03:22,657 >> То, что я в основном говорю, что даже не проверяя 1187 01:03:22,657 --> 01:03:24,490 чтобы увидеть, если есть данные в этот необязательный, 1188 01:03:24,490 --> 01:03:27,140 Я собираюсь идти вперед и предположить, что существует и развернуть его. 1189 01:03:27,140 --> 01:03:31,340 Помните, что мы использовали аналогию Сортировать пакета для опциями 1190 01:03:31,340 --> 01:03:34,700 и мы должны развернуть упаковка и вытащить данные. 1191 01:03:34,700 --> 01:03:37,570 Восклицательный знак силы, которые на самом деле произошло. 1192 01:03:37,570 --> 01:03:39,590 >> Но я знаю, что это безопасно, потому что я проверил 1193 01:03:39,590 --> 01:03:42,070 чтобы увидеть, если данные изображения равна к нулю, я на самом деле проверить 1194 01:03:42,070 --> 01:03:45,420 чтобы увидеть, если это опция был, по сути, не удалось. 1195 01:03:45,420 --> 01:03:47,110 Если бы это было на самом деле, не удалось уже. 1196 01:03:47,110 --> 01:03:52,450 И поэтому я уверен, что как только я получаю на это Тут я могу с уверенностью разворачивать эти данные. 1197 01:03:52,450 --> 01:03:55,710 Вы также можете увидеть его в форма вопросительного знака. 1198 01:03:55,710 --> 01:03:59,100 Так что, если мы прокручиваем вниз туда, где я нужно на самом деле синтаксический анализ данных. 1199 01:03:59,100 --> 01:04:01,850 >> Так что не пугайтесь это своего рода длительных имен. 1200 01:04:01,850 --> 01:04:06,580 Вы можете найти в Apple, Разработчик сайта много 1201 01:04:06,580 --> 01:04:09,620 ссылок на все объекты и все процессы 1202 01:04:09,620 --> 01:04:11,170 что на самом деле сделать это возможным. 1203 01:04:11,170 --> 01:04:15,990 Но обратите внимание, что это по существу Функция, где я передать ему некоторые данные. 1204 01:04:15,990 --> 01:04:18,410 И я вернусь какой-то данных. 1205 01:04:18,410 --> 01:04:24,190 И мне нужно использовать это в качестве ключевого слова преобразовать его в этом NSDictionary? 1206 01:04:24,190 --> 01:04:26,490 Что опять-таки, по желанию NSDictionary. 1207 01:04:26,490 --> 01:04:31,070 Какой я тогда нужно проверить, если он существует. 1208 01:04:31,070 --> 01:04:37,130 >> Так что я могу использовать, что если позволить успешные равно разбирается, 1209 01:04:37,130 --> 01:04:40,620 то я знаю, что необязательно на самом деле содержит некоторые данные. 1210 01:04:40,620 --> 01:04:43,840 Или то, что я сделал здесь было просто предположить, что, если есть 1211 01:04:43,840 --> 01:04:49,067 не было никаких ошибок, которые он на самом деле безопасно. 1212 01:04:49,067 --> 01:04:51,400 Ладно, я хочу поблагодарить Вы все очень большое, что пришли. 1213 01:04:51,400 --> 01:04:53,540 Я знаю, что это было много, но это было только час 1214 01:04:53,540 --> 01:04:55,920 говорить о некоторых довольно продвинутый материал. 1215 01:04:55,920 --> 01:04:59,640 И так, мы надеемся, вы получите шанс загрузить весь код 1216 01:04:59,640 --> 01:05:01,657 и принять лучше, тщательно взглянуть на него. 1217 01:05:01,657 --> 01:05:04,240 Сортировать убедить себя все материала, который происходит. 1218 01:05:04,240 --> 01:05:06,800 И я хочу поблагодарить вас все, опять же, что пришли. 1219 01:05:06,800 --> 01:05:08,760 И удачи в финальных проектов. 1220 01:05:08,760 --> 01:05:10,600 Хорошего дня. 1221 01:05:10,600 --> 01:05:11,467