1 00:00:00,000 --> 00:00:03,332 >> [음악 재생] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ : 모두, CS50 세미나에 오신 것을 환영합니다, 4 00:00:09,590 --> 00:00:11,690 스위프트와 아이폰 OS 앱 개발. 5 00:00:11,690 --> 00:00:15,690 나는 댄 Armendariz 해요, 내가 훈계 해요 여기 하버드에서 컴퓨터 과학의. 6 00:00:15,690 --> 00:00:21,510 >> 그리고 다음 시간이 될 것입니다 많은 물건의 회오리 바람 투어 7 00:00:21,510 --> 00:00:25,160 이 주제에 대해 우리가 들어갈 수있다. 8 00:00:25,160 --> 00:00:29,170 I는 모든 소스 코드를 작성한다 온라인 오늘 볼 수있다. 9 00:00:29,170 --> 00:00:31,990 우리는하지 못할 수 있습니다 실제로 모든 가서 10 00:00:31,990 --> 00:00:34,810 나는 난 것을 요하는 것이 이 시간에 당신을 게재합니다. 11 00:00:34,810 --> 00:00:37,580 그러나 적어도 희망을 통해 소스 코드 코멘트 12 00:00:37,580 --> 00:00:40,830 당신은 파악하려고 할 수 있습니다 무엇을 정확하게 그 일에 대해 무슨 일이 일어나고 13 00:00:40,830 --> 00:00:42,950 우리는 아주에 도착하지 않습니다. 14 00:00:42,950 --> 00:00:46,970 >> 의 전반적 구조 다음과 같이 오늘의 이야기가 될 것입니다. 15 00:00:46,970 --> 00:00:52,820 우리는 몇 가지 기본적인 일을 밖으로 시작합니다 스위프트의 언어와 문법, 16 00:00:52,820 --> 00:00:56,290 고급의 일부에가는 스위프트 언어의 구문. 17 00:00:56,290 --> 00:00:59,560 언어 때문에 정말 현대적이고 그 것이다 18 00:00:59,560 --> 00:01:02,110 높은 수준을 많이 가지고 기능, 우리가하지 않은 일 19 00:01:02,110 --> 00:01:06,600 , CS50에 걸쳐 C에서 볼 또는 심지어 일부 다른 언어 20 00:01:06,600 --> 00:01:09,310 우리는 시작했는지 같은 PHP CS50에 사용, 21 00:01:09,310 --> 00:01:12,670 그래서 나는 시도해야 할 것입니다 또한 몇 가지 주제를 소개하는 22 00:01:12,670 --> 00:01:18,580 더 높은 레벨의 언어와 관련된 당신이 CS50에 깊이 볼 수 있음, 23 00:01:18,580 --> 00:01:21,380 하지만 당신은 나중에 볼 수 있습니다 컴퓨터 과학 수업. 24 00:01:21,380 --> 00:01:25,290 그래서이 될 것 단단히 시간을 포장. 25 00:01:25,290 --> 00:01:28,897 그리고 나를 보자 주시기 바랍니다 당신은 질문이있는 경우에는 알고있다. 26 00:01:28,897 --> 00:01:30,730 당신이 관심이 있다면 개발을하고있는 27 00:01:30,730 --> 00:01:34,442 스위프트와, 또는 정말 모든 iOS 앱 개발, 28 00:01:34,442 --> 00:01:35,900 요구 사항의 몇 가지 있습니다. 29 00:01:35,900 --> 00:01:39,940 첫째, 당신이 사용되어야한다 맥, 예에서 실행 30 00:01:39,940 --> 00:01:43,880 오늘날 우리가 사용하고있는 것으로려고하고있다, OS의 비교적 새로운 버전 31 00:01:43,880 --> 00:01:46,580 이 경우 X를, 나는 X 10.5을 실행하고 있습니다. 32 00:01:46,580 --> 00:01:48,600 당신이 원하는 경우 10.11을 실행 할 수 있습니다. 33 00:01:48,600 --> 00:01:52,430 그러나 모든 것을 당신이 거라고 나중에 엑스 코드 7을 포함한다 참조 34 00:01:52,430 --> 00:01:56,271 이는 최신 버전이 스위프트 2.0 스위프트,의. 35 00:01:56,271 --> 00:01:58,270 이것은 실제로 꽤입니다 중요한 차이점. 36 00:01:58,270 --> 00:02:01,510 구문의 많은있다 꽤 크게 변경 37 00:02:01,510 --> 00:02:05,890 스위프트 1.0 어떤 경우에는, 작년에 출시 된, 38 00:02:05,890 --> 00:02:08,514 스위프트 2.0에있는 바로 이번 가을에 나왔다. 39 00:02:08,514 --> 00:02:09,889 그래서 우리는 스위프트 2.0을 보여줄 것입니다. 40 00:02:09,889 --> 00:02:13,020 많은 것들이 그 온라인 검색 41 00:02:13,020 --> 00:02:18,040 당신은 추가려고 할 때 다양한 물건에 대한 정보, 42 00:02:18,040 --> 00:02:20,710 명시 적으로 수행 할 수 있습니다 스위프트 2를 검색 43 00:02:20,710 --> 00:02:24,950 오히려 그냥 평범한 오래된 스위프트보다 만들기 위해 당신이 구문이 올 수 있는지 확인하십시오. 44 00:02:24,950 --> 00:02:26,920 >> 사실, 이는 일반적으로 사실이다. 45 00:02:26,920 --> 00:02:31,210 개발의 빠른 양이있다 스위프트 언어에서 일어나는 46 00:02:31,210 --> 00:02:35,110 애플은 출시 이후로, 나는 생각한다 무엇, 그것은 년 이상 조금이었다 47 00:02:35,110 --> 00:02:36,370 지금. 48 00:02:36,370 --> 00:02:39,080 그리고 일이 변경되었습니다 극적으로 그 시간에. 49 00:02:39,080 --> 00:02:42,160 그래서 좌절하지 말라 경우에, 당신은 주위를 찾고있을 때 50 00:02:42,160 --> 00:02:48,310 어떻게 달성하는 스위프트거나 주제에 대해 몇 가지 예제 코드를 사용하여 뭔가 51 00:02:48,310 --> 00:02:51,210 또는 뭔가 그렇지 않습니다 그 실제로 스위프트 2.0에서 작동합니다. 52 00:02:51,210 --> 00:02:53,790 당신이 찾고 확인 특히 해당 버전 53 00:02:53,790 --> 00:02:58,690 다른 효과를 최소화하려고 버전과 사물의 그 종류. 54 00:02:58,690 --> 00:03:02,470 >> 난 그냥 몇 가지를 지적하려고합니다 이전 버전에 차이가있다. 55 00:03:02,470 --> 00:03:03,970 하지만 조심하는 뭔가. 56 00:03:03,970 --> 00:03:06,770 그건 아마 될 것 가장 큰 두통 중 하나 57 00:03:06,770 --> 00:03:11,010 당신은 스위프트와 함께해야합니다 발견된다 , 다만 오래된 예제 코드 58 00:03:11,010 --> 00:03:14,050 몇 개월, 사용하려고 그것은 당신의 더 현대적인 프로젝트. 59 00:03:14,050 --> 00:03:15,430 그리고 그것은 단지 작동하지 않습니다. 60 00:03:15,430 --> 00:03:18,530 당신은 컴파일러 오류를 받고있어, 구문 오류, 미친 것들의 모든 종류. 61 00:03:18,530 --> 00:03:21,580 그러니 그냥 환자 수 즉, 당신은 희망 것 62 00:03:21,580 --> 00:03:24,200 꽤 좋은 경험을 가지고 스위프트 전체와. 63 00:03:24,200 --> 00:03:28,430 >> 지금 당신은 join-- 실제로 할 수 있고 나는 희망 우리는 실제로 여전히이 연도 -이 64 00:03:28,430 --> 00:03:30,910 CS (50)의 애플 앱 개발 팀, 어느 65 00:03:30,910 --> 00:03:34,680 당신이 어떤 응용 프로그램을 설치할 수 이는 당신이 당신의 iOS 기기에서 만들 수 있습니다. 66 00:03:34,680 --> 00:03:39,190 그래서이 URL의 경우를 살펴 당신은 그 일에 관심이 있습니다. 67 00:03:39,190 --> 00:03:41,450 >> 그렇게 단지 몇 스위프트 자체에 대한 것. 68 00:03:41,450 --> 00:03:43,580 그것은 컴파일 된 언어입니다. 69 00:03:43,580 --> 00:03:45,870 하지만 당신은 그 일부를 볼 수 있습니다 우리가 사용하는 기능 70 00:03:45,870 --> 00:03:50,650 그것은 비트에서 사용할 수 있도록 이 방법으로도 해석처럼. 71 00:03:50,650 --> 00:03:56,350 >> 구문의 많은 빌려 C.에서 그것은 기반으로하고 C로 작성 72 00:03:56,350 --> 00:04:00,400 그래서 우리는 그것을 볼 수 있습니다 테이크 아웃 많이있다 73 00:04:00,400 --> 00:04:04,450 기존의 지식에서 C에서 우리는 스위프트에 포트 할 수 있습니다. 74 00:04:04,450 --> 00:04:07,290 >> 하지만 일이있다 그 C.에서 매우 다른 확인 75 00:04:07,290 --> 00:04:08,860 그것은 매우 강력한 형식입니다. 76 00:04:08,860 --> 00:04:10,380 자동 메모리 관리가있다. 77 00:04:10,380 --> 00:04:13,170 당신은해야 할 것 아니에요 malloc에​​ 또는 무료로 어디를 사용합니다. 78 00:04:13,170 --> 00:04:15,110 그것은 보편성을 위해 설계되었습니다. 79 00:04:15,110 --> 00:04:19,480 그래서 다른 말로하면, 당신은 그것을 사용할 수 있습니다 애플 시계에서 컨텍스트의 모든 종류, 80 00:04:19,480 --> 00:04:26,290 아이폰에있는 모든 방법 OS X 및 최대 심지어 일부 서버, 심지어 일부 스크립트. 81 00:04:26,290 --> 00:04:28,400 그러나 우리는 그것을 볼 수 있습니다 스크립트에 대한 지원 82 00:04:28,400 --> 00:04:31,360 확실히이 아직 그대로 그것은 다른 언어이다. 83 00:04:31,360 --> 00:04:34,930 그래서 가장 가능성이 당신이 사용하고있을 것이다 이 독점적으로 개발 84 00:04:34,930 --> 00:04:37,060 Mac 또는 아이폰에. 85 00:04:37,060 --> 00:04:40,150 >> 그리고 그것은 현대적인 기능이 많이 있습니다. 86 00:04:40,150 --> 00:04:43,380 그리고이 많은 것들을 물건 것을 우리는 오늘 해결하기 위해 시도 할거야 87 00:04:43,380 --> 00:04:47,590 뿐만 아니라 우리의 주제 솔직히 그, 우리는 전체 과정을 바칠 수 있습니다. 88 00:04:47,590 --> 00:04:50,140 사실이며, CS (51), 제공되는 다음 학기, 89 00:04:50,140 --> 00:04:53,990 이 주제에 많은 초점을 맞추고 그 아래에 설명되어 있습니다. 90 00:04:53,990 --> 00:04:56,781 그래서 당신은 전체 학기를 보낼 수 있습니다 이러한 것들을 이해. 91 00:04:56,781 --> 00:04:58,530 그러나 우리는 시도 할거야 그들을 통해 얻을 수 92 00:04:58,530 --> 00:05:00,800 적어도 충분히 그 무엇을 이해할 수있다 93 00:05:00,800 --> 00:05:03,700 당신이 보는 경우에가는 스위프트 프로그램에서 94 00:05:03,700 --> 00:05:07,310 그리고 당신의 방법을 해킹 할 수 최종 프로젝트는을 통해. 95 00:05:07,310 --> 00:05:10,780 >> 가장 좋은 방법 중 하나 이제 당신이 할 수 이에 대한 자세한 정보를 얻을 수 96 00:05:10,780 --> 00:05:14,700 다만 애플의를 통해 솔직히입니다 스위프트에 대한 설명서를 제공했다. 97 00:05:14,700 --> 00:05:16,930 API가 많이있다 사용할 수 있는지. 98 00:05:16,930 --> 00:05:21,170 그리고 이것은 당신을위한 좋은 가정 기지 특정 물건을 찾기 위해 당신 99 00:05:21,170 --> 00:05:23,020 아이폰 OS와 관련된 API를 수행 할. 100 00:05:23,020 --> 00:05:26,350 당신이 카메라를 사용하려면 예를 들어, 당신은 여기에서 찾고 시작할 수 있습니다 101 00:05:26,350 --> 00:05:32,540 또한 구글과 스택을 사용 평소 오버 플로우. 102 00:05:32,540 --> 00:05:36,670 >> 이에 대한 모든 질문 우리는 바로 뛰어 전에? 103 00:05:36,670 --> 00:05:37,880 괜찮아. 104 00:05:37,880 --> 00:05:38,700 이제 이동하자. 105 00:05:38,700 --> 00:05:42,620 >> 그래서 먼저 내가 가진 예를 들어, 파일 수. 106 00:05:42,620 --> 00:05:46,040 그리고 단계하려고거야 상대적으로 빠르게 그들을 통해. 107 00:05:46,040 --> 00:05:49,190 이 스위프트에 대한 안녕하세요 파일입니다. 108 00:05:49,190 --> 00:05:51,050 그것은 매우 간단합니다. 109 00:05:51,050 --> 00:05:54,360 방법이 더 의견이있다 실제 코드가보다. 110 00:05:54,360 --> 00:05:57,100 실제 코드에있다 주목 라인 (14)의 맨 아래. 111 00:05:57,100 --> 00:05:57,980 그것은 인쇄를 말한다. 112 00:05:57,980 --> 00:05:59,820 그리고, 그것은 함수 호출이다. 113 00:05:59,820 --> 00:06:03,010 우리는에 전달하고 문자열은 안녕하세요 CS50을했다. 114 00:06:03,010 --> 00:06:04,750 더 세미콜론이 없다는 것을 알 수 있습니다. 115 00:06:04,750 --> 00:06:07,010 더 INT 메인이 없다는 것을 알 수 있습니다. 116 00:06:07,010 --> 00:06:10,392 아무도 없습니다 우리가 다 함께했던 cruft에 117 00:06:10,392 --> 00:06:15,020 우리가 이러한 방식을 사용하여 신속한 때 단지 텍스트 파일에 기록되는 118 00:06:15,020 --> 00:06:18,340 다음, 내 컴퓨터에 저장 나는 그것을 컴파일하고 실행할 수 있습니다. 119 00:06:18,340 --> 00:06:20,920 >> 난 여기에 알 수 있습니다 CS50의 IDE를 사용하지. 120 00:06:20,920 --> 00:06:24,460 이것은 내가 있다고 가정 실행하고 나는 OS X에있어 것을, 121 00:06:24,460 --> 00:06:27,870 내가 엑스 코드는 이미 설치되어 있는지 이 위해서는이 시스템 122 00:06:27,870 --> 00:06:29,080 실제로 함수. 123 00:06:29,080 --> 00:06:33,349 그러나 이것은 단지 일반 텍스트 파일 것을 우리는 컴파일하고 편집 할 수 있습니다. 124 00:06:33,349 --> 00:06:34,890 그래서이 실제로 어떻게 작동하는지 살펴 보자. 125 00:06:34,890 --> 00:06:37,430 내가 그것을 컴파일하려면? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 순간 두 한 결과, 우리가 지금 가지고있는 것을 볼 수 있습니다 128 00:06:42,960 --> 00:06:45,360 1이라는 파일에이 컴파일. 129 00:06:45,360 --> 00:06:51,090 그리고 지금 우리는 우리의 CS50을 인쇄 한, 오히려 우리의 Hello World 응용 프로그램입니다. 130 00:06:51,090 --> 00:06:54,690 >> 하나 다른 일을 주목하라 물론, 그 기본입니다 131 00:06:54,690 --> 00:07:00,090 우리는 입력하지 않았다 / n은 새로운 라인을 인쇄합니다. 132 00:07:00,090 --> 00:07:05,315 기본적으로 인쇄 기능에 의해 스위프트는 당신을 위해 새로운 라인을 인쇄 할 수 있습니다. 133 00:07:05,315 --> 00:07:09,284 당신은 선택 사항 추가를 전달할 수 있습니다 매개 변수는 그렇게하지를 말합니다. 134 00:07:09,284 --> 00:07:10,950 그러나에 대한 자세한 내용은 구글. 135 00:07:10,950 --> 00:07:13,450 기본적으로 인쇄 라인을 다할 것입니다. 136 00:07:13,450 --> 00:07:16,420 >> 좋아, 그래서 이동하자 다음 몇 가지 다른 것들. 137 00:07:16,420 --> 00:07:18,620 어떻게 우리가 실제로 변수를 정의 할 수 있습니까? 138 00:07:18,620 --> 00:07:21,960 우리는 그 사용의 할 수 두 가지 방법 중 하나. 139 00:07:21,960 --> 00:07:26,122 그리고 내가 원하는 사람은 당신에게 처음에 관하여는이하자의 정의입니다. 140 00:07:26,122 --> 00:07:27,830 그리고이 중요하다 효과적으로 때문에 141 00:07:27,830 --> 00:07:30,240 우리가하는 일은 상수를 정의하는 것입니다. 142 00:07:30,240 --> 00:07:34,010 우리는 변수를 만들려고하고있다, 또는 오히려 상수라는 이름, 143 00:07:34,010 --> 00:07:38,200 일부 data--에서 그것을 제공 이 경우, 문자열 댄. 144 00:07:38,200 --> 00:07:40,630 그러나 렛을​​ 이용하여 키워드, 우리가 말하는 145 00:07:40,630 --> 00:07:43,860 이 variable-- 것을 또는 다시 호출 constant-- 146 00:07:43,860 --> 00:07:46,220 이름은 결코 변경 될 것 없다. 147 00:07:46,220 --> 00:07:50,120 그것은 걸쳐 불변 될 것 이 프로그램의 지속 기간 148 00:07:50,120 --> 00:07:53,100 또는 전역 상황의 지속 시간 149 00:07:53,100 --> 00:07:55,390 것을 그 변수를 사용할 수 있습니다. 150 00:07:55,390 --> 00:08:00,096 >> 이 때 정말 중요하다 당신이없는 일부 데이터가 151 00:08:00,096 --> 00:08:02,970 프로그램에서 변경하려고, 당신은 다양한 예제를 볼 수 있습니다 152 00:08:02,970 --> 00:08:06,790 우리가 사용하고자하는 경우에 대한 다른 구문을 대 보자, 153 00:08:06,790 --> 00:08:11,040 당신이하게 사용하는 것이 중요 가능하면이 통지 때문에 154 00:08:11,040 --> 00:08:13,740 그것이 언어 변경하지 않을, 155 00:08:13,740 --> 00:08:16,590 그리고 실제로 수행 최적화의 많은 156 00:08:16,590 --> 00:08:19,560 속도를 향상시키고, 프로그램의 안전. 157 00:08:19,560 --> 00:08:24,480 그리고 안전, 나는 못하게 의미 미친 오류가 그것을 충돌 158 00:08:24,480 --> 00:08:27,910 우리는 할 수 있음 C로 보는 것에 익숙해 159 00:08:27,910 --> 00:08:32,460 >> 그 다음 우리는 문자열 보간을 사용할 수 있습니다 문자열 내에서이 작업을 캡슐화합니다. 160 00:08:32,460 --> 00:08:35,200 그래서 우리는이에 볼 수 있습니다 인쇄 라인, 안녕하세요 인쇄, 161 00:08:35,200 --> 00:08:38,950 다음 백 슬래시 열린 괄호를 사용하여, 다음 내 변수의 이름, 162 00:08:38,950 --> 00:08:41,809 이 경우에 상수, 괄호를 닫습니다. 163 00:08:41,809 --> 00:08:46,400 나는 기본적으로 다음을 걸었습니다 이 변수라는 이름의 내용 164 00:08:46,400 --> 00:08:50,240 문자열의 내부 다음 이 결과, 인쇄. 165 00:08:50,240 --> 00:08:54,070 >> 이 파일을 다른 하나의 변화가있다 이는 내가 맨 위에, 가지고있다, 166 00:08:54,070 --> 00:08:57,340 , 오두막 라인에 배치하는 기본적으로 그냥 지정 167 00:08:57,340 --> 00:09:00,180 나는를 사용하도록 스위프트 통역, 어떤 168 00:09:00,180 --> 00:09:04,190 내가 더 이상 할 필요가 없습니다 것을 의미합니다 이 특정 프로그램을 컴파일합니다. 169 00:09:04,190 --> 00:09:06,567 그냥 자신의 스크립트처럼 실행할 수 있습니다. 170 00:09:06,567 --> 00:09:09,400 그러나 이것은 뒤에,이 경우에 있어서는, 장면은 컴파일 후되고 171 00:09:09,400 --> 00:09:10,030 실행되고. 172 00:09:10,030 --> 00:09:13,540 그것은 우리에게 단지 눈에 보이지 않는입니다. 173 00:09:13,540 --> 00:09:15,880 >> 좋아, 그래서 이동하자. 174 00:09:15,880 --> 00:09:19,650 그래서 약간의 꽁수가있다 그건 그냥 전에 일어났다. 175 00:09:19,650 --> 00:09:23,230 난 당신이 내가을 보여 주었다 상수를 정의 할 수 있습니다. 176 00:09:23,230 --> 00:09:25,490 그리고 나는 그것을 할 일부 데이터를 제공 할 수있다. 177 00:09:25,490 --> 00:09:29,240 그러나이 경우, 내가하지 않았다 것을 알 수 실제 데이터의 종류를 지정 178 00:09:29,240 --> 00:09:29,820 그것은이다. 179 00:09:29,820 --> 00:09:32,780 그리고 그 때문이다 컴파일러, 스위프트 수 180 00:09:32,780 --> 00:09:36,910 다만 기반 데이터의 타입을 추론 나는 그것을 넣어 데이터에. 181 00:09:36,910 --> 00:09:41,760 그것은 이것을 평가 것을 알고 있기 때문에 변수 바로 여기,이 데이터 권리 182 00:09:41,760 --> 00:09:43,370 여기에, 그것은 문자열 것을 알고있다. 183 00:09:43,370 --> 00:09:48,690 그래서이 상수 이름은 그러므로 뿐만 아니라 문자열 될 것이다. 184 00:09:48,690 --> 00:09:52,730 >> 그러나 우리는 또한 명시 될 수 있습니다 의 종류에 대한 185 00:09:52,730 --> 00:09:55,790 우리는을 위해 사용하려고 상수 또는 변수 186 00:09:55,790 --> 00:10:01,590 이 구문을 사용하여 instead-- 이름 대장 문자열과 동일하게 187 00:10:01,590 --> 00:10:05,530 이 경우 우리가있어 의미 댄, 상수라는 이름을 정의하는 것. 188 00:10:05,530 --> 00:10:07,150 이 String 유형이 될거야. 189 00:10:07,150 --> 00:10:10,550 그리고 값은 댄 될 것입니다. 190 00:10:10,550 --> 00:10:12,550 이제 다른 방법으로 그 우리는 variables-- 만들 수 있습니다 191 00:10:12,550 --> 00:10:15,549 이들 변수는 가변, 어느 우리가 있다는 사실을 의미하려고 192 00:10:15,549 --> 00:10:19,670 언젠가 그 내용을 변경할 수 있습니다 상황의 지속 시간 193 00:10:19,670 --> 00:10:23,890 그 변수는 우리를 defined--된다 var 키워드를 사용하는 대신하자. 194 00:10:23,890 --> 00:10:27,400 그러나 다시, 기본적으로하지 않는 한 당신은 알고있다 그 데이터를 조작하는 데 필요한, 195 00:10:27,400 --> 00:10:30,510 대한 수 있도록 사용하려고 성능 향상. 196 00:10:30,510 --> 00:10:33,740 >> 이 경우에, I는 수 데이터의 유형을 지정 197 00:10:33,740 --> 00:10:37,650 우리는 내부 것으로 기대 레이블이라는 새로운 변수. 198 00:10:37,650 --> 00:10:38,800 그것은 문자열이 될거야. 199 00:10:38,800 --> 00:10:43,030 그리고 우리는 다음 연결하는거야 두 개의 문자열 함께, 문자열 안녕하세요, 200 00:10:43,030 --> 00:10:48,070 그리고 문자열로 표시 변수, 또는 오히려 상수 이름. 201 00:10:48,070 --> 00:10:50,660 >> 그래서이 때문에 좋은 다소 그 우리처럼 PHP됩니다 202 00:10:50,660 --> 00:10:52,250 아주 쉬운 문자열 연결이 있습니다. 203 00:10:52,250 --> 00:10:56,350 우리는 자동으로 필요가 없습니다 메모리 관리의 어떤 종류를 사용 204 00:10:56,350 --> 00:11:00,580 크기를 증가해야 할 일 이 재미있는 것들의 어떤 종류. 205 00:11:00,580 --> 00:11:05,040 우리가 실제로 기대하는 것처럼이 작동합니다. 206 00:11:05,040 --> 00:11:09,370 >> 좋아,이에 대한 질문? 207 00:11:09,370 --> 00:11:12,520 >> 이제 다른 이유로 그 우리는 당신이 능력이 필요 208 00:11:12,520 --> 00:11:15,490 무엇을 정의 할 수 변수의 데이터 타입은 209 00:11:15,490 --> 00:11:18,170 때때로 우리가하지 않기 때문이다 변수를 초기화 할 210 00:11:18,170 --> 00:11:21,080 에서 일부 데이터와 정의의 포인트. 211 00:11:21,080 --> 00:11:23,500 이 경우 자, 가정 해 봅시다 내가 입력을 시작할지 212 00:11:23,500 --> 00:11:25,040 학년 책에 어떤 성적. 213 00:11:25,040 --> 00:11:27,530 잘 나는 알고 중 하나가 내가되고 싶은 변수 214 00:11:27,530 --> 00:11:30,280 변경 가능한 수준이 될 것입니다. 215 00:11:30,280 --> 00:11:33,010 그리고 우리는 또한 알고 우리가 이 정수가되고 싶어요. 216 00:11:33,010 --> 00:11:36,030 하지만 어쩌면 우리는 아직 할 그 등급을 사용할 수 있습니다. 217 00:11:36,030 --> 00:11:39,570 >> 스위프트, 당신은해야 데이터의 유형을 정의 218 00:11:39,570 --> 00:11:44,000 는 그와 연관된 변수 나 상수하자 219 00:11:44,000 --> 00:11:47,840 당신이 실제로 할 수있는 전 그 변수를 사용합니다. 220 00:11:47,840 --> 00:11:51,170 그것은 강력하게 형식화되어 있기 때문에, 당신은 유형을 연결해야 221 00:11:51,170 --> 00:11:52,890 이러한 변수. 222 00:11:52,890 --> 00:11:56,120 >> 내가 제대로하지 경우에,이 경우에 따라서 일부 값이 처음으로 초기화, 223 00:11:56,120 --> 00:12:00,520 그때 스위프트에게 필요 I는 데이터 타입이 될 것으로 예상된다. 224 00:12:00,520 --> 00:12:02,650 그리고 남아있는 것 그 동일한 데이터 형식 225 00:12:02,650 --> 00:12:05,780 이 프로그램의 역사를 통해. 226 00:12:05,780 --> 00:12:10,050 >> 지금 당신은 가능한 한 빨리 유혹 될 수 있습니다 나는이 등급의 변수를 만들었습니다 227 00:12:10,050 --> 00:12:13,530 그리고 제공 내가 만약 지금 100의 정수, 228 00:12:13,530 --> 00:12:18,540 연결하는 시도 할 그 정수와 문자열, 229 00:12:18,540 --> 00:12:21,610 여전히 사용하고 싶은 유혹 될 수 있습니다 그 문자열 연결 연산자 230 00:12:21,610 --> 00:12:24,500 같은 우리는 단지 몇 줄의 이전했다. 231 00:12:24,500 --> 00:12:26,460 그러나 불행하게도, 이 사실은하지 않습니다 232 00:12:26,460 --> 00:12:29,270 당신이 있기 때문에, 작업 기본적으로 수행 233 00:12:29,270 --> 00:12:32,380 두 가지 유형에 대한 조작. 234 00:12:32,380 --> 00:12:36,856 >> 지금이 다른 매우 다르다 정말 PHP와 같은 언어 235 00:12:36,856 --> 00:12:38,480 유형의 자신의 종류와 loosey 거위. 236 00:12:38,480 --> 00:12:40,030 그들은 단지, 그래, 좋아하고 무엇이든, 난 상관 없어. 237 00:12:40,030 --> 00:12:42,710 그냥 나에게 한 가지 유형을 제공하고, 어쩌면 내가 옳은 일을 할 것입니다. 238 00:12:42,710 --> 00:12:46,060 >> 이 경우, 스위프트는 유형에 대한 매우 엄격한 239 00:12:46,060 --> 00:12:47,350 당신이 다루고있는 그. 240 00:12:47,350 --> 00:12:50,700 이 요약 연산자 또는 연결 연산자 241 00:12:50,700 --> 00:12:54,400 본질적으로 몇 가지가 있습니다 다른 가능한 옵션. 242 00:12:54,400 --> 00:12:56,970 당신은 요약 할 수 있습니다 정수, 또는 당신과 함께 243 00:12:56,970 --> 00:13:00,870 문자열 연결을 수행 할 수 있습니다 아마 다른 것들뿐만 아니라. 244 00:13:00,870 --> 00:13:05,550 그러나 운영자는 인식하지 못하는 경우 그것의 양쪽에 무엇을, 245 00:13:05,550 --> 00:13:10,452 또는 이들의 조합이 아니라 두 가지 유형이 예상 무슨 아니다 246 00:13:10,452 --> 00:13:11,910 다음은 고장의 원인이하는 것입니다. 247 00:13:11,910 --> 00:13:16,690 >> 이 경우에 그래서, 그것은 무엇을 의미 하는가 문자열 플러스의 정수를 가지고 있습니까? 248 00:13:16,690 --> 00:13:18,880 음의 맥락에서 이, 우리는 아마 원하는 249 00:13:18,880 --> 00:13:21,990 문자열 연결 작업을 수행합니다. 250 00:13:21,990 --> 00:13:26,420 그러나 물론 컴퓨터 문맥의 종류가 없습니다. 251 00:13:26,420 --> 00:13:29,950 그래서 우리는 제공해야 이 추가 정보 252 00:13:29,950 --> 00:13:32,390 그것이 무엇을 알려 우리가하고 싶은 것입니다. 253 00:13:32,390 --> 00:13:36,860 >> 즉, 실제로 그렇게 스위프트는 강력하게 형식화되어 254 00:13:36,860 --> 00:13:39,520 당신이 할 필요가 의미 추가 작업의 약간 255 00:13:39,520 --> 00:13:42,100 이 조작에 도착 당신이 원하는 것이 방법. 256 00:13:42,100 --> 00:13:43,710 하지만, 그 결과, 안전하다. 257 00:13:43,710 --> 00:13:46,290 그리고 당신은 일단 받아 이러한 유형의 계정에, 258 00:13:46,290 --> 00:13:49,300 물건은 솔직히 시작 꽤 잘 작동합니다. 259 00:13:49,300 --> 00:13:52,520 >> 이 경우에, 우리는 다음 것일 정도로 문자열 연결을 수행 260 00:13:52,520 --> 00:13:56,040 명시 적으로 변환하여 문자열로 정수 261 00:13:56,040 --> 00:13:58,490 이것에 싸서 자본 S 문자열 함수, 262 00:13:58,490 --> 00:14:03,510 다음 문자열 연결을 사용하여 운영자는, 우리의 레이블 변수를 수정합니다 263 00:14:03,510 --> 00:14:06,280 다음 그것을 밖으로 인쇄 할 수 있습니다. 264 00:14:06,280 --> 00:14:08,420 >> 여태까지는 그런대로 잘됐다? 265 00:14:08,420 --> 00:14:12,020 좋아, 이제 이동하자. 266 00:14:12,020 --> 00:14:16,300 >> 이제 다양한 데이터 존재 우리는 스위프트에서 사용할 수있는 유형. 267 00:14:16,300 --> 00:14:21,620 당신이 익숙해 해짐에 따라, 우리는 변경 가능한 배열을 만들 수 있습니다. 268 00:14:21,620 --> 00:14:26,140 그리고 그 배열은 수 하나의 유형을 포함한다. 269 00:14:26,140 --> 00:14:30,360 >> 이 경우, 우리가 만들거야 정수의 변경 가능한 배열하는 270 00:14:30,360 --> 00:14:34,800 우리는 성적을 호출, 우리는 할 수 있습니다 이 대괄호에서 그것을 저장하기 271 00:14:34,800 --> 00:14:38,650 당신과 같은 형식은 익숙한 성장했습니다 다른 언어의 다양한에. 272 00:14:38,650 --> 00:14:41,150 하지만 우리가있어 여기에 통지 몇 가지를 정의. 273 00:14:41,150 --> 00:14:45,350 등급은 변경 가능한 variable--입니다 우리는하자 키워드를 사용하지 마십시오. 274 00:14:45,350 --> 00:14:49,620 그 의미 그래서 우리는 수정할 수 있습니다 이 배열의 내용. 275 00:14:49,620 --> 00:14:53,420 그것은 형 배열 지능이다 우리는 말할 수 276 00:14:53,420 --> 00:14:56,260 여기에이 대괄호를 기반으로. 277 00:14:56,260 --> 00:14:58,930 >> 좋은 것들을 이제 하나 이것에 대해 그 우리는 278 00:14:58,930 --> 00:15:02,310 많은 액세스를 가질 추가 정보 279 00:15:02,310 --> 00:15:07,110 배열에 대해 바로 사용 몇 가지 간단한 점 표기법. 280 00:15:07,110 --> 00:15:10,500 그래서 예를 들면, grades.count 우리에게 제공 281 00:15:10,500 --> 00:15:14,820 그 존재 항목 개수 우리는 그 다음 꽤 액세스 할 수 있습니다 배열, 282 00:15:14,820 --> 00:15:19,090 쉽게 단순히 점 표기법을 사용하여. 283 00:15:19,090 --> 00:15:21,830 >> 당신은 추가 추가하려면 이 배열에 항목, 284 00:15:21,830 --> 00:15:27,220 당신은 PHP 스타일을 할 수 없습니다 어디 그냥 명시 적으로 정의, 285 00:15:27,220 --> 00:15:30,910 지정된 인덱스, 일부 값 당신은 삽입 할 것을. 286 00:15:30,910 --> 00:15:37,210 대신, APPEND를 사용 배열 형의 메소드 287 00:15:37,210 --> 00:15:40,920 이 목록에 해당 항목, 95을 추가합니다. 288 00:15:40,920 --> 00:15:45,990 >> 그래서 지금이 배열에는 다음이 100, 0, 90, 85 contents--. 289 00:15:45,990 --> 00:15:49,270 그리고 지금 우리가 추가 한 그 95도. 290 00:15:49,270 --> 00:15:51,830 >> 다른 방법이 있습니다 우리는 일을 추가 할 수 있습니다. 291 00:15:51,830 --> 00:15:55,030 당신은 실제로 사용할 수 있습니다 요약 연산자 292 00:15:55,030 --> 00:15:59,200 어느 것으로 해석 될 배열 추가 작업. 293 00:15:59,200 --> 00:16:04,680 그리고 당신은 다른를 추가 할 수 있습니다 그 내용 (70, 80) 배열되어, 294 00:16:04,680 --> 00:16:05,560 그 배열. 295 00:16:05,560 --> 00:16:08,250 그래서 지금 우리가 가지고있는 이 변수의 내용 296 00:16:08,250 --> 00:16:17,220 100, 0, 90, 85, 95, 70, 및 80 grades--. 297 00:16:17,220 --> 00:16:21,850 이것은 단지 좋은 작은 구문입니다 스위프트가 우리에게 제공 설탕. 298 00:16:21,850 --> 00:16:23,850 >> 우리는 합계 싶다면 등급, 우리는 아마있어 299 00:16:23,850 --> 00:16:27,340 반복 할 것 이 루프의 모든 항목을 통해. 300 00:16:27,340 --> 00:16:32,150 그리고 우리는 스위프트의, 개념,해야합니까 의 루프 당신이 예상하는대로. 301 00:16:32,150 --> 00:16:35,350 그러나 우리는 표시 방법 범위는 약간 다릅니다. 302 00:16:35,350 --> 00:16:37,790 이 경우에 따라서 모든 것을 정리해 보면, 우리는거야 303 00:16:37,790 --> 00:16:40,650 임시을 만들 것 우리를 위해 변수라고 합 304 00:16:40,650 --> 00:16:42,580 이 수를 유지합니다. 305 00:16:42,580 --> 00:16:44,430 >> 그리고 우리에 대한 통지 여기에 루프 구조. 306 00:16:44,430 --> 00:16:46,820 0에서 인덱스를 들어 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 그래서이 건설, 0 .. 00:17:01,860 우리가 만들려고하고 있다는 것을 말 0에서 최대 정수의 범위 310 00:17:01,860 --> 00:17:05,750 뿐만 grades.count 제외. 311 00:17:05,750 --> 00:17:09,577 그래서이 될 것이다 0, 1, 2, 3, 4, 5, 최대 그러나 많은 일까지 312 00:17:09,577 --> 00:17:10,410 grades.count 전에. 313 00:17:10,410 --> 00:17:14,160 >> 그래서이 방법과 다른 우리 루프를 일반적으로 사용하는 것 314 00:17:14,160 --> 00:17:18,569 당신은 어떤 인덱스를했을 경우 변수, 처음에 0이 설정할 315 00:17:18,569 --> 00:17:25,480 다음 몇 가지까지 그 통합 항목의 수보다 작은 값 316 00:17:25,480 --> 00:17:27,140 그 배열. 317 00:17:27,140 --> 00:17:29,820 >> 그래서 수정이 이에, 실제로, 318 00:17:29,820 --> 00:17:35,010 이는 우리가 아주 쉽게를 할 수 있습니다 범위의 다른 유형을 설정합니다. 319 00:17:35,010 --> 00:17:40,570 이 범위를 변경하는 경우 세 개의 점, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 이 범위를 나타내는 0 포함 grades.count합니다, 321 00:17:45,120 --> 00:17:49,260 그 숫자는 것을 의미 그 범위에 포함되어 있습니다. 322 00:17:49,260 --> 00:17:52,110 >> 그러나 이것은 매우 편리 이러한 정확한 것들에 대한, 323 00:17:52,110 --> 00:17:54,590 우리가 수행해야 할 때 루프를 통해 반복 324 00:17:54,590 --> 00:17:59,630 그 인덱스는 제로 인덱싱되기 때문에, 우리는 다른 언어에서 보았 듯이 325 00:17:59,630 --> 00:18:02,360 게다가. 326 00:18:02,360 --> 00:18:05,210 루프이에 대한 질문? 327 00:18:05,210 --> 00:18:10,660 >> 그래서 내재 된 정의가있다 이 인덱스 변수, 328 00:18:10,660 --> 00:18:14,350 그 값은 0에서 시작하고, 모든 루프 반복에서 계속 329 00:18:14,350 --> 00:18:17,950 점까지 1까지 증가 할 즉, grades.count 같음 330 00:18:17,950 --> 00:18:20,380 어느 시점에서, 루프가 중단됩니다. 331 00:18:20,380 --> 00:18:23,730 >> 우리의 문자열이 주목 여기 보간, 332 00:18:23,730 --> 00:18:26,910 우리는 실제로 몇 가지 간단한을 수행 할 수 있습니다 그 값을 조작. 333 00:18:26,910 --> 00:18:31,230 그래서 인덱스 플러스 1은 실제로 것 그 값의 요약을 수행 334 00:18:31,230 --> 00:18:34,780 인덱스 때문에 이 경우, 정수. 335 00:18:34,780 --> 00:18:37,810 그 때, 윌 다음 문자열로 변환 336 00:18:37,810 --> 00:18:42,230 그리고, 여기에이 문자열로 보간 우리가 예상하는대로 및 인쇄. . 337 00:18:42,230 --> 00:18:44,520 >> 그리고 좋은 점 배열에 대해 여기 338 00:18:44,520 --> 00:18:50,730 우리는 또한이 할 수 있는지 페치 값과 설정 값 339 00:18:50,730 --> 00:18:54,080 대괄호 표기법 등을 사용하여 우리는 다른 언어로 보았다. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> 좋아요, 여기에서, 우리는 지금 우리의 등급의 모든 우리의 합을 계산합니다. 342 00:19:01,030 --> 00:19:02,780 지금 종류의 다음을 논리적 인 단계가 될 것이다 343 00:19:02,780 --> 00:19:07,580 찾기 위해 나눗셈 연산을 수행하는 그 성적의 평균 밖으로. 344 00:19:07,580 --> 00:19:10,150 그러나 중요한 일 여기에 무슨 일이 일어나고있는 345 00:19:10,150 --> 00:19:15,020 이 합은 아마도 정수이다이다. 346 00:19:15,020 --> 00:19:18,020 그러나 우리는 몇 가지를 수행 할 필요가 이중 분할의 종류. 347 00:19:18,020 --> 00:19:20,600 그리고이 될 것입니다 때 매우 중요합니다 348 00:19:20,600 --> 00:19:24,140 우리는이 작업을 수행하려면, 우리가 무슨 말을하기 때문에 349 00:19:24,140 --> 00:19:28,430 우리가 실제로 필요가있다 두 복식에 분할을 수행합니다. 350 00:19:28,430 --> 00:19:31,370 그리고 다시, 스위프트 때문에 매우 강력하게 형식화되고, 351 00:19:31,370 --> 00:19:36,760 우리는 명시 적으로 모든 설정해야합니다 복식에 항목 우리는 전에 실제로 352 00:19:36,760 --> 00:19:38,300 해당 작업을 수행합니다. 353 00:19:38,300 --> 00:19:40,550 >> 위해 우리를 위해 너무 이중 분할을 수행, 354 00:19:40,550 --> 00:19:43,730 그것은 단지 하나의 충분한 아니다 해당 항목의 이중합니다. 355 00:19:43,730 --> 00:19:46,400 둘 다 될 필요 빠른 위해서는 더블 356 00:19:46,400 --> 00:19:50,860 이 있는지 확인합니다 우리가하고 싶은 것입니다. 357 00:19:50,860 --> 00:19:54,360 그래서 우리는 명시 적으로 캐스트합니다 우리는 위에서 계산 한 금액 358 00:19:54,360 --> 00:19:58,970 복식에 등급의 수 및 그 작업 및 저장을 수행 359 00:19:58,970 --> 00:20:02,390 그 새로운 변수로, 또는 오히려 평균이라는 새로운 상수, 360 00:20:02,390 --> 00:20:06,810 어떤 종류의, 당신이 상상할 어느 것인가? 361 00:20:06,810 --> 00:20:07,587 두 번, 그래. 362 00:20:07,587 --> 00:20:09,420 이 경우에 그래서, 우리 을 지정할 필요가 없습니다 363 00:20:09,420 --> 00:20:13,450 그것으로부터 추론 될 수 있기 때문에 데이터 평균의 작업은 어떤 종류의 364 00:20:13,450 --> 00:20:14,730 될거야. 365 00:20:14,730 --> 00:20:19,025 그리고 스위프트는 일반적으로 아주 좋은 것입니다 약 타입을 추론 할 수있는. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> 당신이보고 싶지 않습니다 실행하거나, 내가 이동할 수 있습니다? 368 00:20:24,200 --> 00:20:25,640 나는 계속하고 싶다. 369 00:20:25,640 --> 00:20:28,130 이 중 하나에 대한 질문? 370 00:20:28,130 --> 00:20:28,630 큰. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> 이제 우리는에 도착하기 시작하는거야 좋은 이예요 ... 정의 기능, 373 00:20:35,010 --> 00:20:39,090 그리고 다른 종류의 커플 스위프트 고유 당신은하지 않았 음 374 00:20:39,090 --> 00:20:41,620 다른 언어로 볼 수 이 시점까지, 375 00:20:41,620 --> 00:20:46,290 하지만 그들은 다른 존재한다 당신이 나중에 찾을 수있는 언어. 376 00:20:46,290 --> 00:20:48,210 그래서 일단 당신이 원하는 경우 함수를 정의하고, 377 00:20:48,210 --> 00:20:52,170 당신은 펑키 한 단어로 정의 함수 다음 함수 이름, 378 00:20:52,170 --> 00:20:56,710 다음 괄호 안에 인수 것을 당신은 그 기능에 동의합니다. 379 00:20:56,710 --> 00:21:00,280 인수도해야 specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 또한 데이터의 유형을 지정해야 그들은 추론 할 수없는 그들은이다. 381 00:21:05,010 --> 00:21:07,500 그리고 우리는 그 작은을 볼 수 있습니다 조금의주의. 382 00:21:07,500 --> 00:21:09,920 >> 그래서이 경우에 우리는이 기능은 printGradeCount했다. 383 00:21:09,920 --> 00:21:12,840 우리는 동의거야 variable-- 또는 오히려이 경우, 384 00:21:12,840 --> 00:21:14,450 constant--는 성적표를했다. 385 00:21:14,450 --> 00:21:18,517 그리고 그것은이 될 것입니다 정수의 배열을 입력합니다. 386 00:21:18,517 --> 00:21:20,600 이제 뭔가있다 이 여기 정말 중요합니다 387 00:21:20,600 --> 00:21:21,849 것을 당신이 이해하고 싶다. 388 00:21:21,849 --> 00:21:27,560 즉, 그 기본적으로 이러한 주장이다 이 기능에 입력되는 것을 389 00:21:27,560 --> 00:21:34,380 암시 적하자 키워드로 정의, 이는 내가이 수정할 수 없습니다 것을 의미합니다 390 00:21:34,380 --> 00:21:39,850 여기 성적표 변수입니다. 391 00:21:39,850 --> 00:21:43,360 그리고 그런 종류의 의미가 당신이 데이터를 전달하고 있기 때문이다. 392 00:21:43,360 --> 00:21:45,860 그리고 당신은 아마 그것을 원하지 않아요 당신 아래에서 변경 될 수 있습니다. 393 00:21:45,860 --> 00:21:50,800 명시 적으로 언급 할 수있다 이 변수를 넣어이다 394 00:21:50,800 --> 00:21:52,070 여기에 var 키워드. 395 00:21:52,070 --> 00:21:56,832 하지만 우리가했습니다 잡았다이다 주의 사람 과거에 행한 396 00:21:56,832 --> 00:21:59,790 그들은 그것이 무슨 가정이다 가변 될 때, 사실을 397 00:21:59,790 --> 00:22:02,640 일정하다. 398 00:22:02,640 --> 00:22:07,340 >> 좋아, 그래서 여기 그리고,이 경우에, 우리는 반환 유형을 지정하지 않습니다. 399 00:22:07,340 --> 00:22:09,460 우리가 수행하는 방법을 보여 드리겠습니다 단지 순간에 그. 400 00:22:09,460 --> 00:22:12,340 그러나 우리가 여기에 있음을 알 수 조건의 경우 단순한. 401 00:22:12,340 --> 00:22:14,560 성적표는 경우 빈이 경우 어떤 402 00:22:14,560 --> 00:22:19,310 이 정수의 단지 속성입니다 배열은, 우리는 뭔가를 인쇄 할 수 있습니다. 403 00:22:19,310 --> 00:22:23,100 그렇지 않으면 우리는 다른 뭔가. 404 00:22:23,100 --> 00:22:25,000 >> 꽤 간단 지금까지 나는 생각한다. 405 00:22:25,000 --> 00:22:27,960 당신은 질문이있는 경우 그러나 저를 중지합니다. 406 00:22:27,960 --> 00:22:33,350 >> 이제이 함수는, 평균도 얻어 일부 인수, 또는 오히려 하나의 인수, 407 00:22:33,350 --> 00:22:37,507 성적표,이 시간이다 double 형을 반환하는 것입니다. 408 00:22:37,507 --> 00:22:39,340 이 계산되기 때문에 평균 그건 409 00:22:39,340 --> 00:22:45,010 실제로을 반환 할 것 호출 라인에 계산 된 평균. 410 00:22:45,010 --> 00:22:50,070 >> 이 경우, 우리는를 지정할 화살표 후 유형을 반환합니다. 411 00:22:50,070 --> 00:22:53,260 그리고 이것은 느낄 수 처음에는 이상한 가지. 412 00:22:53,260 --> 00:22:55,610 당신은 익숙해 져있어 반환을 설정하는 413 00:22:55,610 --> 00:22:57,720 함수의 이름 앞에 입력합니다. 414 00:22:57,720 --> 00:23:00,310 하지만 당신이 생각하는 경우 수학의 관점에서, 415 00:23:00,310 --> 00:23:03,320 같은 당신은 수학이있을 때 그 함수를 정의, 416 00:23:03,320 --> 00:23:06,807 당신은 일부 기능을 가지고 입력은, 그것을 출력을 생성한다. 417 00:23:06,807 --> 00:23:08,890 그리고 그게 정확히 무엇을의 이것은 모방 할 예정이다. 418 00:23:08,890 --> 00:23:12,460 그리고 다른 언어의 몇 가지있다 그뿐만 아니라, 유사한 구문이 419 00:23:12,460 --> 00:23:15,674 하지만 아마 아무도 없다 당신은 CS50에서 보았다. 420 00:23:15,674 --> 00:23:17,090 그러나 여전히 혼동하지 마십시오. 421 00:23:17,090 --> 00:23:21,650 화살표는 무슨 일을 의미합니다 이 경우 반환합니다. 422 00:23:21,650 --> 00:23:23,650 좋아, 그럼 우리가 어떻게 가고있다 이 평균을 계산하는 방법? 423 00:23:23,650 --> 00:23:25,649 음, 경우 성적표 비어있는, 그럼 우리는있어 424 00:23:25,649 --> 00:23:30,731 이는 어쩌면, 0을 반환하는 것 합리적인 방법이 치료를 위해. 425 00:23:30,731 --> 00:23:32,980 나는 이제 오게 몰라 다시 그에게 조금의. 426 00:23:32,980 --> 00:23:34,688 이것은 실제로하지 않을 수 있습니다 합리적인 방법이 될 427 00:23:34,688 --> 00:23:38,310 만약 평균을 계산 우리는 빈 성적표 있습니다. 428 00:23:38,310 --> 00:23:41,260 >> 그런 다음 우리는 단지 우리의 요약을 수행합니다. 429 00:23:41,260 --> 00:23:43,900 우리는 실제로 여기에 주목 의 다른 버전 430 00:23:43,900 --> 00:23:49,190 우리는 반복 할 수 루프에 대한 배열의 모든 단일 항목 이상 431 00:23:49,190 --> 00:23:53,630 각 요소를 배치 자신의 변수로. 432 00:23:53,630 --> 00:23:56,200 에서 등급에 대한 지정하여 성적표, 우리가 무슨 말을하는거야 433 00:23:56,200 --> 00:24:00,560 우리가 암시 거라고이다 라는 새 일정을 생성 434 00:24:00,560 --> 00:24:05,180 표현하는 것입니다 등급 성적표의 모든 고유 아이템 435 00:24:05,180 --> 00:24:06,769 때마다 그 루프 반복의에게. 436 00:24:06,769 --> 00:24:08,560 그래서 처음 이 실행있어, 등급 것 437 00:24:08,560 --> 00:24:09,800 성적표의 첫 번째 항목 수. 438 00:24:09,800 --> 00:24:12,300 두 번째 시간이 될 것입니다 두 번째 항목, 등등 등등 439 00:24:12,300 --> 00:24:15,970 성적표는이 때까지 요소 자체를 소진. 440 00:24:15,970 --> 00:24:20,390 그런 다음 우리는 요약 할 수있을 것입니다 우리의 합계 변수로 등급 441 00:24:20,390 --> 00:24:22,570 우리의 평균을 반환 로 우리는 전에 본 적이. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 확인, 질문? 444 00:24:26,950 --> 00:24:27,699 네? 445 00:24:27,699 --> 00:24:28,990 청중 : 나는 두 가지 질문이 있습니다. 446 00:24:28,990 --> 00:24:33,586 첫째, 가설, 수 이 하나의 정수를 실행? 447 00:24:33,586 --> 00:24:35,604 를 할 필요가 없습니다 이중, 맞습니까? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ : 수 당신 그 질문을 반복? 449 00:24:37,520 --> 00:24:39,587 청중 : 나는 할 수있다 평균으로 정수? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ : 수 당신 평균으로 정수를합니까? 451 00:24:41,670 --> 00:24:45,015 그래서 정수를 반환 대신 이중의 평균? 452 00:24:45,015 --> 00:24:48,204 >> 청중 : 당신을 Return-- 그 지금 아래에 있습니다. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ : 바로 여기, 0.0 반환? 454 00:24:49,870 --> 00:24:51,790 청중 : 네, 그냥 0을 반환합니다. 455 00:24:51,790 --> 00:24:56,590 그래서이 될 것입니다 80 또는 85가 아닌 85.2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ : 경우에 따라서, 그래서 몇 가지 방법있다 457 00:24:59,465 --> 00:25:00,090 대답합니다. 458 00:25:00,090 --> 00:25:02,760 저를 순서대로 답할 수 있도록. 459 00:25:02,760 --> 00:25:06,740 난 그냥이 반환을한다면 0, 0은 정수 값이다. 460 00:25:06,740 --> 00:25:09,730 그리고 그 원인이됩니다 이 경우에 대한 입력 오류 461 00:25:09,730 --> 00:25:13,210 그것은 더블을 기대하고 있기 때문에 그러나 정수를 반환한다. 462 00:25:13,210 --> 00:25:16,770 나는 정수를 반환 할 경우에, 나는 할 수 있습니다. 463 00:25:16,770 --> 00:25:20,450 나는 반환 형식을 설정할 수 있습니다 , int로 여기에 0을 반환하고, 464 00:25:20,450 --> 00:25:22,047 이중 분할을 수행하지. 465 00:25:22,047 --> 00:25:23,880 그러나 우리는 것 정수 나누기를하고. 466 00:25:23,880 --> 00:25:27,080 그래서 우리는 다음을 얻을 수 없겠죠 우리가 가능해야 함을 평균. 467 00:25:27,080 --> 00:25:29,210 하지만 그래 우리가 수정할 수 있습니다 그 방법의 종류. 468 00:25:29,210 --> 00:25:32,598 >> 청중 : 그리고 둘째로, 당신을 상단에 한 두 번이있다. 469 00:25:32,598 --> 00:25:35,502 그러나 아래로 아래, 때를 더블 더블을 반환 할, 470 00:25:35,502 --> 00:25:38,280 그 자동 이미 두 형식을 반환. 471 00:25:38,280 --> 00:25:42,278 왜 당신은 아직도 그것을 정의해야합니까 더블 상단에 화살표와 함께? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ : 그래서 그 경우는 일부 473 00:25:45,010 --> 00:25:50,580 의 짓이야 그래서, 질문을 반복 그것은 반환에서 암시 때문에 474 00:25:50,580 --> 00:25:56,030 여기 유형, 어떤 유형이 실제로 , 우리는 스위프트에 명시해야 475 00:25:56,030 --> 00:25:59,970 우리가 원하는 일에 대해 이 기능을 밖으로 돌려 476 00:25:59,970 --> 00:26:02,690 이 입력 수행 할 때되도록 확인, 그것은 확실히 할 수 있습니다 477 00:26:02,690 --> 00:26:05,850 우리가 실제로 쓴 무슨 아래 아래로 실제로 그 준수합니다. 478 00:26:05,850 --> 00:26:10,225 그래서 검사 같은 종류의의 상황을 자신에게 일종의. 479 00:26:10,225 --> 00:26:11,050 그러나이으로 죠 480 00:26:11,050 --> 00:26:12,560 >> 청중 : [들리지] 화살표? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ : 경우 경우가 있습니다 우리는 우리가 암시 적으로 할 수 있도록 지정할 수 있습니다 482 00:26:19,490 --> 00:26:21,550 반환 형식을 설정합니다. 483 00:26:21,550 --> 00:26:23,940 그러나이 경우, 나는하지 않습니다 그래도 문제가 해결 것이라고 생각합니다. 484 00:26:23,940 --> 00:26:26,190 다른 구문이있다 우리가 나중에 볼 수있다. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> 좋아요,이 소스 코드는 조금 다르다 487 00:26:35,280 --> 00:26:41,839 이에서 인수를 구문 분석하기 때문에 우리가 호출하는 기능. 488 00:26:41,839 --> 00:26:44,130 그것이 어떻게 작동하는지 내가 당신을 보여 드리죠 우리는 사실에 이동하기 전에 489 00:26:44,130 --> 00:26:48,050 몇 가지 흥미로운 것들 그 스위프트에서 일어나고. 490 00:26:48,050 --> 00:26:51,870 >> 이 경우에 그래서, 경우에게 난 그냥이 실행 그것이 무엇을하고 있는지 코드, 그 통지 491 00:26:51,870 --> 00:26:54,900 is-- 동안, 가지 나에게 이상한 오류가 있습니다. 492 00:26:54,900 --> 00:26:59,730 나는 그것의 몇 가지를 통과해야 명령 줄 인수로 정수. 493 00:26:59,730 --> 00:27:06,220 그럼, 150과 80을 보자,하고 Enter 키를 누르십시오 실제로 무엇을하고 있는지 알 수 있습니다. 494 00:27:06,220 --> 00:27:09,890 그것은 각각 수용있어 정수로이 값. 495 00:27:09,890 --> 00:27:12,040 이 성적표로 입력합니다. 496 00:27:12,040 --> 00:27:14,470 그리고 그것을 수행하는 것 그 평균 계산 497 00:27:14,470 --> 00:27:16,650 우리가 예상하는대로 있음을 출력한다. 498 00:27:16,650 --> 00:27:19,950 >> 그러나 분명히 뭔가가가는 거기 이 거부 뭔가에 499 00:27:19,950 --> 00:27:23,300 정수로 뭔가. 500 00:27:23,300 --> 00:27:27,300 당신은 우리가 있었던 때부터 기억 하듯이 명령 행 인수를 처리 501 00:27:27,300 --> 00:27:32,640 첫 번째 C와 다른 언어로 해당 명령 줄 인수에 0 번째 항목 502 00:27:32,640 --> 00:27:35,774 목록은 명령의 이름입니다 우리는 실제로 실행있다. 503 00:27:35,774 --> 00:27:38,690 이 경우에 그래서, 난 그냥 반복 해요 모든 명령 줄 인수를 통해. 504 00:27:38,690 --> 00:27:41,650 그러나 나는 멋진 어떤 종류의 일을하고 있지 않다 첫 번째 것을 건너 확인합니다. 505 00:27:41,650 --> 00:27:45,920 난 그냥 명시 적 있어요 아니면 암시 해요 이러한 유형의 어떤 확인 506 00:27:45,920 --> 00:27:49,900 정수는 실제로 내가 전에 있습니다 이 계산을 수행합니다. 507 00:27:49,900 --> 00:27:52,420 >> 그리고 그 본질적이다 무슨 일이 여기에 무슨 일이 일어나고. 508 00:27:52,420 --> 00:27:55,860 모든 인수에 대한 프로세스의 인수, 509 00:27:55,860 --> 00:27:59,210 나는 몇 가지 검사를 수행하겠습니다. 510 00:27:59,210 --> 00:28:01,970 이 경우, 내가 갈거야 처음으로 변환하려고합니다 511 00:28:01,970 --> 00:28:07,620 정수로 그 인수 명시 적 타입 변환을 수행, 512 00:28:07,620 --> 00:28:12,310 그것은, 입력에, 문자열이기 때문이다 아닌 정수 사실. 513 00:28:12,310 --> 00:28:18,140 >> 하지만이 이상한 구문 종류, 하자 등급은 지능 (인수)와 동일합니다. 514 00:28:18,140 --> 00:28:21,120 실제로 무슨 일 여기에 매우입니다 515 00:28:21,120 --> 00:28:24,390 당신의 사용 스위프트 중요. 516 00:28:24,390 --> 00:28:27,610 이것은 무엇의 사용 옵션 형이라고합니다. 517 00:28:27,610 --> 00:28:34,790 >> 따라서이 기능, 지능 (인수) 뿐만 아니라 정수,하지만 수익을 반환 518 00:28:34,790 --> 00:28:37,470 무엇을 선택 정수라고. 519 00:28:37,470 --> 00:28:41,200 그래서이 일종의입니다 유형의 상단에 유형. 520 00:28:41,200 --> 00:28:45,900 당신은 일종의처럼 상상할 수 이 패키지처럼 반환합니다. 521 00:28:45,900 --> 00:28:47,750 그리고 당신은 열 때 패키지, 그 중 하나 522 00:28:47,750 --> 00:28:53,930 결과 정수를 가지고, 또는 전혀 거기에 절대적으로 아무것도 없습니다. 523 00:28:53,930 --> 00:28:58,140 이것은 오류 체크로서 유용한 기구 때문에이 경우 524 00:28:58,140 --> 00:29:02,080 우리가 찾을 수 있습니다,이이었다 형식 변환에 성공? 525 00:29:02,080 --> 00:29:05,810 이 되었다면, 이것은 사실상 내부의 정수를해야 할 것. 526 00:29:05,810 --> 00:29:08,750 그렇지 않으면 일부를 것 우리가 전무 전화 할게 가치있는 527 00:29:08,750 --> 00:29:10,920 전혀 정수의 대표입니다. 528 00:29:10,920 --> 00:29:13,270 정말 아무것도의 대표입니다. 529 00:29:13,270 --> 00:29:18,130 >> 그리고이 경우 건설 우리는 패키지를 푸는 할 수 있습니다, 530 00:29:18,130 --> 00:29:19,850 바인딩을 선택. 531 00:29:19,850 --> 00:29:25,560 그리고 우리는 랩을 해제 할 수있는 경우 패키지 내부의 정수를 발견, 532 00:29:25,560 --> 00:29:27,720 그 다음 우리가 말하는 여기에 우리가 다음 것입니다 533 00:29:27,720 --> 00:29:33,090 그 값으로 설정 될 수 있도록 등급이라는 정수입니다. 534 00:29:33,090 --> 00:29:36,590 그리고 if 문이 부분, if 문 상단 부분 535 00:29:36,590 --> 00:29:40,390 실행이 때문에 것 기 해제에 성공했습니다. 536 00:29:40,390 --> 00:29:43,290 >> 그냥 그래서 발생하는 경우 오류가 아마도이 있었다 537 00:29:43,290 --> 00:29:47,040 이 명시 적 형식 변환에 어쩌면, 정수로 문자열에서 538 00:29:47,040 --> 00:29:49,160 그것은 예를 들면 값 ABC이다. 539 00:29:49,160 --> 00:29:52,120 그리고 실제로 않을거야 정수로 변환합니다. 540 00:29:52,120 --> 00:29:55,520 그런 다음, 전무를 반환합니다 어떤 정수 아니다. 541 00:29:55,520 --> 00:29:57,570 그리고이 경우 문은 그럼 실패합니다. 542 00:29:57,570 --> 00:30:01,930 때문에 존재하지 않습니다 등급 그것은 어떤 정수 함량이 없다. 543 00:30:01,930 --> 00:30:06,391 그리고 대신이 다른 블록을 실행합니다. 544 00:30:06,391 --> 00:30:06,890 네? 545 00:30:06,890 --> 00:30:09,652 >> 청중 : 무기 호는 N-I-L인가? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ : 무기 호 예, N-I-L이다. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> 그래서 이것은 아마 중 하나입니다 스위프트에 대한 어려운 것, 549 00:30:20,310 --> 00:30:23,690 당신은에있어 특히 iOS 앱에 잡초 550 00:30:23,690 --> 00:30:27,442 당신은 실제로 시도하고있다 거기에 몇 가지 개발을 할 수 있습니다. 551 00:30:27,442 --> 00:30:29,400 그것은 소리 할 것 에 대한 선택 당신. 552 00:30:29,400 --> 00:30:33,050 그것은 당신을 요구 할 것 물음표와 느낌표. 553 00:30:33,050 --> 00:30:37,100 하지만 경우에 당신은 out-- 파악하면 파악에 시간을 할애 554 00:30:37,100 --> 00:30:41,990 무슨 일이, 옵션 유형에 대한 것입니다 당신은 자신에게 두통을 많이 절약 할 수 555 00:30:41,990 --> 00:30:46,040 당신이하려고하는 등 스위프트의 응용 프로그램을 작성합니다. 556 00:30:46,040 --> 00:30:47,660 >> 실제로 매우 강력한 기능입니다. 557 00:30:47,660 --> 00:30:49,826 그리고 당신은해야합니다 지금은 내 말을. 558 00:30:49,826 --> 00:30:52,620 그러나 우리는이 구조를 볼 수 있습니다 일부 다른 사람은 그것을 좋아 559 00:30:52,620 --> 00:30:56,740 다른 소스 코드의 일부에 해당 우리는 조금 당신을 보여줄 것이다. 560 00:30:56,740 --> 00:31:00,440 >> 어떤 초기 질문은 여기에 있습니까? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 그래서 중요한 테이크 아웃은이다 옵션 타입은 메타 타입의 일종이다. 563 00:31:08,690 --> 00:31:12,500 그것은 하나는, 값을 갖는다 그리고 그 후, 않는 경우 564 00:31:12,500 --> 00:31:18,110 아마도 관련된 그 값을가집니다 그것으로, 또는 아무런 가치가없는, 565 00:31:18,110 --> 00:31:19,620 그것은 닐에 의해 표현된다. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 이 나머지는 아마도 당신이 예상하는대로. 568 00:31:28,870 --> 00:31:32,900 >> 그럼 램프 업하자 어려움을 다시 한번. 569 00:31:32,900 --> 00:31:37,070 그리고 이번에는의 몇 가지 살펴 보자 실제로 존재하는 다른 데이터 유형. 570 00:31:37,070 --> 00:31:41,290 그 중 하나 인 사전 인 파이썬 사전과 매우 유사합니다. 571 00:31:41,290 --> 00:31:48,270 이 해시 테이블에서 다소 유사 C. 그것은 본질적으로 키의 매핑 572 00:31:48,270 --> 00:31:49,820 여기서 키 문자열이 될 수 있습니다. 573 00:31:49,820 --> 00:31:52,670 그리고 당신이 그 열쇠를 볼 때, 그 키 값을 갖게됩니다. 574 00:31:52,670 --> 00:31:56,020 그래서, 아주 배열 아니지만 대신, 더 밀접하게 관련 575 00:31:56,020 --> 00:31:58,810 해시 맵 또는 해시 테이블. 576 00:31:58,810 --> 00:32:02,420 >> 의이가 생각하는 방법을 알아 보자 실제로 우리 전에 작동합니다 577 00:32:02,420 --> 00:32:05,210 소스 코드 자체로 이동합니다. 578 00:32:05,210 --> 00:32:07,680 난 그냥이를 실행하면, 아무것도 실제로 발생하지 않습니다. 579 00:32:07,680 --> 00:32:12,430 내가 기대하고있어 그것이 나를 말하고 다음과 같은 유형의 몇 가지 매개 변수를 설정합니다. 580 00:32:12,430 --> 00:32:16,050 그래서 나는에게 제공하겠습니다 그것은 몇 가지 문제 설정 이름, 581 00:32:16,050 --> 00:32:18,490 그래서 PSET0, 어쩌면 나는 100을 얻었다. 582 00:32:18,490 --> 00:32:20,790 그리고 PSET1, 나는 5를 얻었다. 583 00:32:20,790 --> 00:32:24,630 그리고 시험에, 나는 정말 잘했고, (30)을 얻었다. 584 00:32:24,630 --> 00:32:27,180 그리고 죄송합니다, 나는 여기에 공간을했다. 585 00:32:27,180 --> 00:32:30,940 >> 내가 Enter 키를 누르 때, 당신은 볼 수 있습니다 그것은 몇 가지 계산을 수행한다. 586 00:32:30,940 --> 00:32:33,740 이 성적표는 세 말한다 등급, PSET1, PSET0, 시험. 587 00:32:33,740 --> 00:32:36,120 그리고 성적표는있다 이 특정 평균. 588 00:32:36,120 --> 00:32:38,370 그래서 다시, 우리는 최선을 다하고 있습니다 이 성적표 아이디어와, 589 00:32:38,370 --> 00:32:44,650 그러나 우리는 반복하는 계속거야 우리의 기능의 복잡성. 590 00:32:44,650 --> 00:32:47,650 >> 발병 그래서, 우리는 그냥있어 함수를 만드는 것 그 591 00:32:47,650 --> 00:32:49,390 인쇄 사용량을 담당한다. 592 00:32:49,390 --> 00:32:51,920 그리고이 종료있다 하는 것입니다 기능 단지 593 00:32:51,920 --> 00:32:53,710 응용 프로그램을 강제로 종료합니다. 594 00:32:53,710 --> 00:32:56,530 이 일이 아닙니다 그 당신은 iOS 앱에 사용합니다. 595 00:32:56,530 --> 00:32:59,750 이것은,이 경우, 인 명령 행 인수와 함께. 596 00:32:59,750 --> 00:33:01,990 다음으로 우리는 엑스 코드를 향해 움직이기 시작합니다. 597 00:33:01,990 --> 00:33:07,760 하지만이 명령에 특정 스위프트의 선 스타일 프로그램. 598 00:33:07,760 --> 00:33:11,490 >> 이제 몇 가지를 살펴 보자 여기에 흥미로운 것들. 599 00:33:11,490 --> 00:33:15,150 의는 단지 몇 보자 흥미로운 것들을 아마 언급 600 00:33:15,150 --> 00:33:19,930 그게 내 기능에 등급 번호를 인쇄, 601 00:33:19,930 --> 00:33:26,090 당신은 내가 그 목록을 한 것으로 기억 수도 있습니다 items-- PSET1, PSET0 및 시험. 602 00:33:26,090 --> 00:33:29,130 당신은 실제로 신속 쉽게이 작업을 수행 603 00:33:29,130 --> 00:33:34,490 인 성적표를 취함으로써 키와 값을 가지고 사전. 604 00:33:34,490 --> 00:33:38,730 키 모두를 통해 알게 여기 키 도트 방식, 605 00:33:38,730 --> 00:33:43,180 다음,이 joinWithSeparator를 사용 다음 키를 모두 취할 것이다 606 00:33:43,180 --> 00:33:48,590 우리가에 입력했다고, pset1-- 또는 죄송합니다, PSET0, PSET1 및 exam-- 607 00:33:48,590 --> 00:33:53,030 이들을 함께 연결할 쉼표와 공간을 사용 608 00:33:53,030 --> 00:33:55,400 하나의 긴 문자열을 만들 수 있습니다. 609 00:33:55,400 --> 00:34:00,190 이 조인 조작은 급격입니다 다양한 상황에서 유용합니다. 610 00:34:00,190 --> 00:34:03,450 그리고 그것은이 joinWithSeparator이다. 611 00:34:03,450 --> 00:34:06,939 >> 그리고 이것은의 한 가지이다 스위프트 1 스위프트 2로 변경되었습니다. 612 00:34:06,939 --> 00:34:08,730 를있을 사용 파이썬 style-- 당신이 있다면 613 00:34:08,730 --> 00:34:13,219 Python-- 파이썬에 익숙 스타일 문자열에 방법을 가입 할 수 있습니다. 614 00:34:13,219 --> 00:34:15,699 그러나 그것은 더 이상 없다 스위프트 2의 경우. 615 00:34:15,699 --> 00:34:19,400 당신은 당신이 원하는 경우에 사용하려는 물건의 배열을 연결하는 616 00:34:19,400 --> 00:34:23,380 함께 문자열. 617 00:34:23,380 --> 00:34:27,889 >> 그래서 아마도 다음에 우리의 이전 평균의 토론, 618 00:34:27,889 --> 00:34:32,659 그것은 조금 더 의미가 있습니다 우리는 평균 기능을 설정하려면 619 00:34:32,659 --> 00:34:36,610 오히려 임의의 이중를 할 수 다만 명시 적으로 두 배 이상. 620 00:34:36,610 --> 00:34:39,239 우리는 있었기 때문에 특별한 조건 경우, 621 00:34:39,239 --> 00:34:41,550 어떤 성적표 실제로 경우 그 안에 어떤 값이 없다? 622 00:34:41,550 --> 00:34:44,280 무엇 평균 반환해야합니까? 623 00:34:44,280 --> 00:34:46,350 >> 그럼 아마 C에서 당신 뭔가를했을 624 00:34:46,350 --> 00:34:50,040 같은 감시 값을 제공하는 등의 0.0, 아니면 음수, 625 00:34:50,040 --> 00:34:53,690 또는 뭔가는 사실을 나타내는 일부 오류 조건이 있다는 것을 626 00:34:53,690 --> 00:34:57,910 당신은 아마도 사실이 없습니다 그 평균을 산출 할 수있는 능력. 627 00:34:57,910 --> 00:35:05,590 음을 지정의 아름다움 옵션 유형은 그렇게하는 것입니다. 628 00:35:05,590 --> 00:35:09,540 그리고 지금은이 모든 단어를 말하고,하지만 해요 이것은 실제로 optionals를 사용하지 않습니다. 629 00:35:09,540 --> 00:35:12,970 그러나 우리는 그냥 그렇게 볼 수 있습니다 우리는 평균 설정할 수있는 분 630 00:35:12,970 --> 00:35:17,230 그래서 선택적 데이터 유형으로 실제로 다음 몇 가지 데이터를 반환하는 경우 631 00:35:17,230 --> 00:35:18,470 우리는 데이터를 반환합니다. 632 00:35:18,470 --> 00:35:20,570 그렇지 않으면 우리는 돌아갑니다 무기 호는이 말하는 633 00:35:20,570 --> 00:35:22,200 의미있는 계산이 없습니다. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> 의 다른 뭔가로 이동하자. 636 00:35:28,570 --> 00:35:35,910 여기에서 그래서 우리는보고 있었어요 커맨드 라인에서 모든 이들 예. 637 00:35:35,910 --> 00:35:39,470 하지만 실제로는거야 무슨 취급하는 것은 엑스 코드입니다. 638 00:35:39,470 --> 00:35:43,720 그리고 좋은 점 중 하나 엑스 코드이며, 특히 스위프트에, 639 00:35:43,720 --> 00:35:47,450 우리는이 문제를 가지고있다 일이 놀이터를했다. 640 00:35:47,450 --> 00:35:51,470 그리고 놀이터입니다 모든 iOS 앱에서. 641 00:35:51,470 --> 00:35:54,751 그러나 당신이 실험을 할 수 있습니다 아주 쉬운 방법으로 스위프트와. 642 00:35:54,751 --> 00:35:56,000 당신은 당신의 모든 코드를 입력 할 수 있습니다. 643 00:35:56,000 --> 00:35:58,140 그것은 잘 여기에서 강조 구문입니다. 644 00:35:58,140 --> 00:36:01,600 새 파일을 만들 때, 그것은 요청합니다 당신은 당신은 놀이터를 만들려면. 645 00:36:01,600 --> 00:36:08,720 그러나 놀이터의 좋은 점 즉, 당신의 윈도우의 오른쪽에 646 00:36:08,720 --> 00:36:12,020 실제로 보여 않습니다 코드에서 출력. 647 00:36:12,020 --> 00:36:16,110 나는 아래로 스크롤한다면, 우리는 무엇을 볼 수 있습니다 코드의 여러 라인의 출력 648 00:36:16,110 --> 00:36:17,200 실제로 될 일이. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> 이 경우에 그래서, 우리는 갈거야 방향을 조금 변경 651 00:36:26,790 --> 00:36:30,960 정말 뭔가에 대해 이야기 이 높은 수준의 방법에 중요한 652 00:36:30,960 --> 00:36:34,020 스위프트는 그것과를 운영하고 있음 클로저의 생각이다. 653 00:36:34,020 --> 00:36:36,960 그리고 당신은 아마 본 적이 자바 스크립트에 약간. 654 00:36:36,960 --> 00:36:40,770 당신의 사람들이 들어 CS50에, 폐쇄 655 00:36:40,770 --> 00:36:47,240 일을 매우 인기가 아주 좋은 방법입니다 현대적인 언어로 높은 수준의 것들. 656 00:36:47,240 --> 00:36:50,270 그러나 그것은 또한에 가지 어려운 처음으로 주위에 당신의 머리를 정리. 657 00:36:50,270 --> 00:36:52,269 이 보이는 것 그래서 처음, 그 괜찮아요. 658 00:36:52,269 --> 00:36:56,740 그냥 소스 코드를보고 참조 여러분이 가정에서 그것을 알아낼 수 있다면. 659 00:36:56,740 --> 00:37:01,050 >> 이 경우에 그래서, 그런 말을하자 우리 지수를 많이 생성 할 660 00:37:01,050 --> 00:37:04,134 어떤 고정 된 값. 661 00:37:04,134 --> 00:37:05,800 그래서이 경우에 나는 함수를 만들 수 있습니다. 662 00:37:05,800 --> 00:37:09,270 나는 전력을 호출하는거야 인생의 2 누구의 유일한 목적 663 00:37:09,270 --> 00:37:15,770 일부 입력 더블을하는 것입니다 그것은, 그 값을 반환합니다. 664 00:37:15,770 --> 00:37:21,210 내가 여기에 알 수 있습니다 데이터의 하나의 유형을 수용. 665 00:37:21,210 --> 00:37:23,137 이 X라는 변수가 될 것. 666 00:37:23,137 --> 00:37:23,970 이 유형 더블의입니다. 667 00:37:23,970 --> 00:37:26,190 그리고 나는 여기에 두 번을 반환하는거야. 668 00:37:26,190 --> 00:37:29,100 그리고 난 그냥 할거야 아주 솔직히 꽤 669 00:37:29,100 --> 00:37:32,650 이 값을 두 배로 순진 방법. 670 00:37:32,650 --> 00:37:35,600 그리고 난 당신이 왜 보여주지 단지 두 번째에 유용하다. 671 00:37:35,600 --> 00:37:40,418 >> 우리가이 범위를 가지고 그 여기에 주목 다시. 1 일, 점에 대한 672 00:37:40,418 --> 00:37:44,130 것을 의미한다 점 점, 2, 이 루프는 두 번 실행됩니다. 673 00:37:44,130 --> 00:37:46,480 그러나 이것은 더미 변수를 나타냅니다. 674 00:37:46,480 --> 00:37:49,650 그것은 정말 않을거야 의미 어디 그 변수를 사용 675 00:37:49,650 --> 00:37:51,070 이 루프의 내부. 676 00:37:51,070 --> 00:37:55,380 난 그냥이 줄을 원하는 코드의 두 번 실행하기 위해, 677 00:37:55,380 --> 00:37:58,980 알 필요없이 그 범위의 값입니다. 678 00:37:58,980 --> 00:38:02,570 >> 이 경우 내가 결과를 실행 해요 그래서 시간은 기본적으로 두 번 X 679 00:38:02,570 --> 00:38:06,560 나는이 값을 제곱있어 것을 의미한다. 680 00:38:06,560 --> 00:38:10,230 그리고이 일이 우리가 예상하는대로 작동합니다. 681 00:38:10,230 --> 00:38:16,410 (2)의 전력의 값을 전달 2.0은 우리에게 4의 출력을 제공합니다. 682 00:38:16,410 --> 00:38:18,810 10.24 3.2 작품. 683 00:38:18,810 --> 00:38:22,660 >> 이제 우리는 비슷한 작업을 수행 할 수 있습니다 3의 힘에 대한 것. 684 00:38:22,660 --> 00:38:25,330 그러나 이제 범위를 변경합니다. 685 00:38:25,330 --> 00:38:28,840 1의 더미 변수 1-3, 3 회 곱 686 00:38:28,840 --> 00:38:29,830 과 같은 일을. 687 00:38:29,830 --> 00:38:32,240 >> 그래서이 조금 인위적인 느낌이 있습니다. 688 00:38:32,240 --> 00:38:34,270 그러나 중요한있다 여기에 일이있는 689 00:38:34,270 --> 00:38:37,770 이보고 있다는 것입니다 두 가지 기능, 거기에 690 00:38:37,770 --> 00:38:43,600 다른의 단 한 가지, 어떤 범위에서이 값입니다. 691 00:38:43,600 --> 00:38:46,910 이 두 가지에 대한 다른 모든 기능, 3의 전력과 2의 전원, 692 00:38:46,910 --> 00:38:50,440 아르 사실상 동일하기 때문에 그것들은 동일한 방식으로 작동한다. 693 00:38:50,440 --> 00:38:53,460 >> 이 때, 조금 그래서 알람 벨이 꺼져가는되어야한다. 694 00:38:53,460 --> 00:38:56,200 희망 당신은 무슨 말을하는지, 당신도 알다시피,이 조금 느낌 695 00:38:56,200 --> 00:38:59,250 노력의 중복 등을들 수있다. 696 00:38:59,250 --> 00:39:02,950 아마도 방법은 내가 것있다 이 모든 것을 캡슐화 할 수 697 00:39:02,950 --> 00:39:06,630 및 기능을 제공하는 또는 기능을 만드는 것이 698 00:39:06,630 --> 00:39:11,550 정확히 내가없이 원하는 것을 명시 적으로 그것을 입력 할 필요. 699 00:39:11,550 --> 00:39:15,732 그리고 이것은 어떤 힘 폐쇄의 우리가 수행 할 수 있습니다. 700 00:39:15,732 --> 00:39:16,940 그래서이 살펴 보자. 701 00:39:16,940 --> 00:39:18,700 그리고 나는 몇 가지를 보낼거야 이에 분,이 때문에 702 00:39:18,700 --> 00:39:20,310 스위프트을 위해 매우 중요하다. 703 00:39:20,310 --> 00:39:22,900 우리는이 모든 시간을 참조하십시오. 704 00:39:22,900 --> 00:39:24,550 우리는 함수를 정의하는 것입니다. 705 00:39:24,550 --> 00:39:26,380 그것은 powerOf 호출 할 것입니다. 706 00:39:26,380 --> 00:39:29,470 그것은을 받아 들일 것 매개 변수는 int 형의 Y를했다. 707 00:39:29,470 --> 00:39:32,220 그러나 반환 형식을 살펴. 708 00:39:32,220 --> 00:39:38,730 반환 형식에서, 괄호는 더블 더블 화살표. 709 00:39:38,730 --> 00:39:43,370 이 기능 즉, 이 기능 powerOf, 710 00:39:43,370 --> 00:39:46,550 함수 반환된다. 711 00:39:46,550 --> 00:39:50,845 즉, 두 번을 받고있다 더블을 반환. 712 00:39:50,845 --> 00:39:53,720 그래서 미친의 종류 들릴 수도, 하지만 이제 조금 아래로 스크롤 할 수 713 00:39:53,720 --> 00:39:55,060 무슨 일이 일어나는지 볼 본다. 714 00:39:55,060 --> 00:39:57,910 우리는이 기능 powerOf의 내부입니다. 715 00:39:57,910 --> 00:40:00,760 우리는 새로운 기능을 만드는 exponentiator라고, 716 00:40:00,760 --> 00:40:02,900 하지만 그것이 무엇인지는 중요하지 않습니다. 717 00:40:02,900 --> 00:40:06,410 >> 이 연관되어 있습니다 X의 입력 값. 718 00:40:06,410 --> 00:40:09,910 그리고 두 번에 복용 더블을 반환. 719 00:40:09,910 --> 00:40:16,320 이는 동일한 코드는 그 우리 2의 값 것 이외에는, 상술 한 본 720 00:40:16,320 --> 00:40:20,060 3 또는 값, 그 그 범위의 상한, 721 00:40:20,060 --> 00:40:23,210 로 대체되었습니다 Y의 값이 어느 722 00:40:23,210 --> 00:40:27,230 초기 매개 변수였다 우리의 powerOf 기능. 723 00:40:27,230 --> 00:40:31,700 그리고이 시점에서, 우리 exponentiator을 반환합니다. 724 00:40:31,700 --> 00:40:33,345 우리는 함수를 반환하고 있습니다. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> 그것은 종류의 작은 마음 불고 같다. 727 00:40:39,550 --> 00:40:44,360 그러나 이제 무슨 가정 해 봅시다 나는이 함수를 호출 할 때 powerOf 728 00:40:44,360 --> 00:40:47,610 2처럼에 어떤 값을 전달합니다. 729 00:40:47,610 --> 00:40:50,020 이것이 의미하는 것입니다 지금 값을 가질 730 00:40:50,020 --> 00:40:55,130 이 값을 의미 Y 2, 이 exponentiator 기능에 Y 731 00:40:55,130 --> 00:40:56,410 그 값이 될 것입니다. 732 00:40:56,410 --> 00:41:01,290 그러나 나는이 반환 해요 exponentiator 기능. 733 00:41:01,290 --> 00:41:05,900 >> 그래서 스위프트 내가 말하는 것을 알 수 이 경우 만들었습니다. 734 00:41:05,900 --> 00:41:10,550 광장, 그것은 정의의되어 보자 더블을 허용하는 기능 735 00:41:10,550 --> 00:41:12,610 더블을 반환합니다. 736 00:41:12,610 --> 00:41:16,590 나는 함수를 만들었습니다 사각형 뭔가 그 737 00:41:16,590 --> 00:41:19,782 바로 여기에이 메커니즘을 사용하여. 738 00:41:19,782 --> 00:41:22,490 정말 무슨 일이 일어나고 있는지입니다 이 함수를 반환하는 것을 739 00:41:22,490 --> 00:41:26,390 exponentiator 있지만,이 값 Y는 내부에 싸여있다. 740 00:41:26,390 --> 00:41:31,080 그래서 지금 때마다 나는 이것을 사용 변수 또는이 상수라는 741 00:41:31,080 --> 00:41:35,180 광장, 그것은 그것이야 함수로 동작합니다. 742 00:41:35,180 --> 00:41:39,960 그래서 나는 그 변수를 호출 할 수 있습니다 같은 난 함수를 호출, 743 00:41:39,960 --> 00:41:43,830 그리고 그것으로 번호를 전달, 이 경우 3 등을들 수있다. 744 00:41:43,830 --> 00:41:45,910 그리고이 값을 제곱합니다. 745 00:41:45,910 --> 00:41:53,340 그래서 3는 것이다 제곱 우리가 여기에서 볼 수 있듯이, 9가된다. 746 00:41:53,340 --> 00:41:56,530 >> 정말 미친,하지만 지금 나에게 기회를 허용한다 747 00:41:56,530 --> 00:41:59,040 다른 powerOf 기능을 만들 수 있습니다. 748 00:41:59,040 --> 00:42:03,680 나는 확인, 글쎄 지금은 내가 원하는 말할 수처럼 새로운 기능을 만들려면 powerOf (3) 749 00:42:03,680 --> 00:42:06,290 과에 그 저장 상수라는 큐브. 750 00:42:06,290 --> 00:42:10,220 이제 큐브를 될 것입니다 다음 것이다 별도의 기능 751 00:42:10,220 --> 00:42:14,800 입력 및 큐브와 같은 일부 값을 그 우리가 하단 라인에서 볼 수 있듯이 값 752 00:42:14,800 --> 00:42:16,420 이리. 753 00:42:16,420 --> 00:42:18,590 2 큐브는 8 초래할 것입니다. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> 희망이 꽤 깔끔한 물건. 756 00:42:22,680 --> 00:42:25,920 당신은 전에 본 적이 없어요. 757 00:42:25,920 --> 00:42:29,990 나는 폐쇄 살펴 보시기 바랍니다 그리고 조금 더이 조사. 758 00:42:29,990 --> 00:42:33,570 그것은 우리가 많이 정말 강력한 물건을 볼 것 자바 스크립트와 다른 언어. 759 00:42:33,570 --> 00:42:37,160 그것은 정말 매우 중요 뿐만 아니라 API를 이해 760 00:42:37,160 --> 00:42:38,620 우리는 단지 1 초에 도착거야. 761 00:42:38,620 --> 00:42:39,456 네? 762 00:42:39,456 --> 00:42:43,740 >> 청중 : 때 당신이 할 powerOf (2), 괄호 다음 763 00:42:43,740 --> 00:42:48,764 다른 괄호, 다른 input-- 당신은 기본적으로 사각형을 대체하고 있습니다. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ : 그래서 보면 여기에 맨 마지막 줄에서. 765 00:42:50,930 --> 00:42:55,930 사실은 전혀 가능 당신이 제안 체인 그렇게. 766 00:42:55,930 --> 00:43:00,990 그래서 powerOf (5) 우리가 가고 있다는 것을 의미한다 여기에 5 exponentiator을합니다. 767 00:43:00,990 --> 00:43:04,160 그래서 이것은 본질적으로 될 것입니다 다섯 번째 전원 4와 같은 것, 768 00:43:04,160 --> 00:43:07,200 우리는 제곱 승을 만들었습니다 때문에 다섯 번째 전원 기능, 769 00:43:07,200 --> 00:43:09,920 우리는에 전달하고 그 값 4를 작동합니다. 770 00:43:09,920 --> 00:43:12,619 그리고 우리는 그 가치를 우리는 1024 기대. 771 00:43:12,619 --> 00:43:14,785 청중 : 그리고 그것은 아니다 그것은 쉽게하므로, 이름 772 00:43:14,785 --> 00:43:16,570 무엇이든 사각형을 읽을 수 있습니다. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ : 오른쪽, 정확하게. 774 00:43:17,903 --> 00:43:21,120 난 그냥 넣어 전에 그래서 여기 그래서 일정에 775 00:43:21,120 --> 00:43:23,808 그것은 한 것으로는 쉽게 그 이름을 사용합니다. 776 00:43:23,808 --> 00:43:24,308 네? 777 00:43:24,308 --> 00:43:26,942 >> 청중 : 이러한 맥락에서 powerOf,이 부분 778 00:43:26,942 --> 00:43:30,774 프로그래밍 언어의 방법 당신에 반대 779 00:43:30,774 --> 00:43:33,952 [들림]에 powerOf 생각? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ : 그래서 이 경우, powerOf 781 00:43:35,660 --> 00:43:39,280 단순히 이름입니다 내가 여기에 정의 된 함수. 782 00:43:39,280 --> 00:43:41,801 그래서 고유 아니다 언어 자체에, 783 00:43:41,801 --> 00:43:43,550 대신, 그것은 단지 이 기능 784 00:43:43,550 --> 00:43:45,628 그 이름 난에게 그 이름을 제공하기 때문이다. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 다른 질문? 787 00:43:51,920 --> 00:43:52,800 괜찮아. 788 00:43:52,800 --> 00:43:54,750 >> 지금이 중대하다. 789 00:43:54,750 --> 00:43:58,170 하지만 당신을보고하지 않을거야 폐쇄 기능의 많은 것을 790 00:43:58,170 --> 00:44:03,440 사용자가 정의한 경우 내부,이처럼 하나의 기능, 다른 기능. 791 00:44:03,440 --> 00:44:04,320 그리고 당신은 그것을 할 수 있습니다. 792 00:44:04,320 --> 00:44:06,430 그러나 가지 아니다 정말 필요한, ​​오른쪽? 793 00:44:06,430 --> 00:44:09,189 나는이 정의 않는 이유처럼 기능이라고 exponentiator 794 00:44:09,189 --> 00:44:10,480 다음 즉시 반환합니다. 795 00:44:10,480 --> 00:44:15,220 수없는 이유는 내가 바로 바로 이 기능을 반환? 796 00:44:15,220 --> 00:44:18,890 >> 사실, 이것은 정확하게 라는 개념 뒤에 아이디어 797 00:44:18,890 --> 00:44:22,410 익명 함수, 익명 함수는 실제로하지 않습니다 798 00:44:22,410 --> 00:44:25,270 그들 때문에 이름이 하나를 가질 필요가 없습니다. 799 00:44:25,270 --> 00:44:28,700 그리고이 경우,도 7b에있어서, 우리는 정확하게 그것을 찾을 수 있습니다. 800 00:44:28,700 --> 00:44:31,470 그것은 모두 같은 코드입니다 정확히 같은 일을 801 00:44:31,470 --> 00:44:35,570 하지만 지금 우리는 그래서 약간 변경했습니다 그이 powerOf 기능 즉시 802 00:44:35,570 --> 00:44:37,750 함수를 반환합니다. 803 00:44:37,750 --> 00:44:44,150 복귀 후 그 주목, 열린 중괄호가있다. 804 00:44:44,150 --> 00:44:46,410 그것은이 입력 더블을 기대합니다. 805 00:44:46,410 --> 00:44:48,560 그것은 그 출력을 두 번 기대합니다. 806 00:44:48,560 --> 00:44:52,175 그리고 다음의 키워드 코드 자체를 분리합니다. 807 00:44:52,175 --> 00:44:53,550 그래서이 익명의 기능입니다. 808 00:44:53,550 --> 00:44:57,030 실제로 반면, 이름이없는 전에이 exponentiator 불렀다. 809 00:44:57,030 --> 00:45:00,229 그러나 우리는 정말, 본대로 exponentiator을 참조하지 않았다 810 00:45:00,229 --> 00:45:01,270 그 함수의 외부. 811 00:45:01,270 --> 00:45:02,470 그래서 그것은 중요하지 않았다. 812 00:45:02,470 --> 00:45:06,300 따라서이 익명 함수는 이 무명이기 때문에 소위, 813 00:45:06,300 --> 00:45:09,107 하지만 여전히 사용하고있어 이 코드의 컨텍스트. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> 난 다음 몇 가지 것들 잘하면 계속 진행 816 00:45:16,079 --> 00:45:17,370 당신의 마음을 조금 불고. 817 00:45:17,370 --> 00:45:20,410 우리는이 훨씬 더를 단순화 할 수 있습니다. 818 00:45:20,410 --> 00:45:24,490 기민 있다는 사실 때문에 앞서 지적 819 00:45:24,490 --> 00:45:29,100 아마 우리는 사실에 의해, 알고 이 코드에서 추론, 무엇을 820 00:45:29,100 --> 00:45:31,750 이 코드의 출력이 될 것이다. 821 00:45:31,750 --> 00:45:38,180 그리고 사실,이 익명의 기능에, 우리는 실제로 데이터의 타입을 추론 할 수있다. 822 00:45:38,180 --> 00:45:41,650 >> 그래서이 하나, 우리는 더 이상 없다 명시 적으로 정의 할 필요가 823 00:45:41,650 --> 00:45:44,850 인 데이터의 타입 이 함수의 입력 및 출력 824 00:45:44,850 --> 00:45:45,890 몇 가지 이유로. 825 00:45:45,890 --> 00:45:51,390 하나는 우리가 바라, 정의한 것입니다 바깥 쪽 함수의 프로토 타입, 826 00:45:51,390 --> 00:45:55,770 데이터 익명의 유형 기능은 입력 및 출력해야한다. 827 00:45:55,770 --> 00:45:57,900 그리고 다른에서, 우리 코드에서 추론 할 수있다 828 00:45:57,900 --> 00:46:01,930 여기 아래 우리는 동의하는 그 두 번 유형 인 입력 829 00:46:01,930 --> 00:46:03,670 더블을 반환. 830 00:46:03,670 --> 00:46:07,890 >> 우리가 명시 적으로하지 않은 여기에 알 수 있습니다 인수의 이름을 정의 831 00:46:07,890 --> 00:46:11,220 하는 것이이 기능 받고있다. 832 00:46:11,220 --> 00:46:16,180 그래서 우리는 우리가 참조 할 수 있습니다 참조 $ 0 $ 1을 사용 이러한 매개 변수, 833 00:46:16,180 --> 00:46:20,140 등등 등등에 따라 사용 된 파라미터의 개수 834 00:46:20,140 --> 00:46:20,850 이 기능에. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> 이것은 당신이가는 일이다 많은이 열린 중괄호입니다 볼 수 있습니다 837 00:46:29,740 --> 00:46:32,797 정의 다음 $ 0을 입력 한 다음 몇 가지 동작, 838 00:46:32,797 --> 00:46:34,130 다음 닫힌 중괄호. 839 00:46:34,130 --> 00:46:38,630 즉, 익명 함수 즉,이 동작을 수행한다. 840 00:46:38,630 --> 00:46:42,940 그것은이 매개 변수 곳이있다 이 유형의 추론이다입니다. 841 00:46:42,940 --> 00:46:44,860 즉, 첫 번째 매개 변수는 $ 0입니다. 842 00:46:44,860 --> 00:46:49,010 그리고 어떤 동작입니다 그 $ 0 일어나고. 843 00:46:49,010 --> 00:46:52,100 >> 청중 : 달러 기호 그래서 기본적으로 매개 변수를 의미 844 00:46:52,100 --> 00:46:53,429 0이 첫 번째 수단? 845 00:46:53,429 --> 00:46:54,720 DAN ARMENDARIZ : 맞습니다. 846 00:46:54,720 --> 00:46:59,100 그래서 달러 기호는 기본적으로 의미 파라미터는, 0은 제를 의미한다. 847 00:46:59,100 --> 00:47:02,760 그러나에 구체적으로 작동 내가 이름을 지정하지 않은이 경우 848 00:47:02,760 --> 00:47:07,940 내 익명 함수의 인수. 849 00:47:07,940 --> 00:47:11,119 >> 청중 : 펄 또는 뭔가가 있습니까 거기에이 달러 기호, 달러 0? 850 00:47:11,119 --> 00:47:12,702 DAN ARMENDARIZ : 미안 해요, 어떤합니까? 851 00:47:12,702 --> 00:47:15,360 청중 : 펄이 있습니까 이 달러 0 달러 1-- 852 00:47:15,360 --> 00:47:17,318 DAN ARMENDARIZ : 나는 아니에요 펄 너무 잘 알고, 853 00:47:17,318 --> 00:47:21,340 하지만 PHP는 어떤 변수를 정의 달러 기호를 기반으로. 854 00:47:21,340 --> 00:47:26,120 그리고 일부 언어가있을 수 있습니다 이 같은 기능을 가지고있다. 855 00:47:26,120 --> 00:47:28,240 사실, 스위프트가 차용 이 같은 기능의 많은 856 00:47:28,240 --> 00:47:29,489 다른 언어의 로트. 857 00:47:29,489 --> 00:47:32,380 우리는 파이썬의 힌트을 참조하십시오. 858 00:47:32,380 --> 00:47:35,800 유형이 정의 OCaml의에서 오는 것 같다. 859 00:47:35,800 --> 00:47:38,932 그리고 우리는 단지 전체 무리가 다른 언어를 많이에서 물건. 860 00:47:38,932 --> 00:47:40,640 즉, 좋은 중 하나 스위프트에 대한 것들 861 00:47:40,640 --> 00:47:43,390 그것은 가장 많이 걸립니다이다 언어의 무리에서 아이디어 862 00:47:43,390 --> 00:47:47,229 함께 그들 모두를 shoehorns 수퍼 언어로. 863 00:47:47,229 --> 00:47:49,520 사실, 경우에 당신이 날 수 있도록 당신의 마음을 불고 계속 864 00:47:49,520 --> 00:47:51,000 그래서 우리는이 모든 일을했습니다. 865 00:47:51,000 --> 00:47:56,690 우리는 아마도이 조금 단순화 할 수 있습니다 물론, 그 실현에 의해 비트, 866 00:47:56,690 --> 00:48:02,120 스위프트는 제곱 승을 가지고 기능이 내장되어 있습니다. 867 00:48:02,120 --> 00:48:04,660 나는 다윈을 가져 오면되는 바로 라이브러리입니다 868 00:48:04,660 --> 00:48:09,680 지금,이 함수 호출 펑 특징 나는 기능의 내 능력을 단순화 할 수 있습니다 869 00:48:09,680 --> 00:48:11,830 다음이어야합니다. 870 00:48:11,830 --> 00:48:15,860 그것은 반환 될 것입니다 이 익명 함수. 871 00:48:15,860 --> 00:48:17,950 >> 하지만이 지금 얼마나 간단한 봐. 872 00:48:17,950 --> 00:48:22,780 이 익명의 기능입니다 몇몇 유형의 데이터를 받아들이고, 873 00:48:22,780 --> 00:48:26,600 그것은 하나가 될 것입니다 인수 특히, 874 00:48:26,600 --> 00:48:29,320 유형을 두 번이다 그 $ 0 참조. 875 00:48:29,320 --> 00:48:32,680 이 유형 더블을 반환하는 것입니다. 876 00:48:32,680 --> 00:48:35,760 그러나 return 문 지금 암시입니다. 877 00:48:35,760 --> 00:48:39,990 >> 그리고이 정확한 스타일입니다 , 스위프트에 매우 유행 878 00:48:39,990 --> 00:48:40,790 모든 곳에. 879 00:48:40,790 --> 00:48:43,190 우리는이를 보게 될 것입니다 스위프트의 모든 시간. 880 00:48:43,190 --> 00:48:46,150 그래서 난에이 모든 것을 보여주는거야 당신이 구문 때문이다. 881 00:48:46,150 --> 00:48:49,070 이것은 매우 일반적입니다 을 의미하는 볼 882 00:48:49,070 --> 00:48:51,420 익명 함수는 그 수행 883 00:48:51,420 --> 00:48:54,640 이러한 주장에 대한 몇 가지 작업. 884 00:48:54,640 --> 00:48:56,940 그리고 암시 적 반환있다. 885 00:48:56,940 --> 00:49:01,850 그래서 절대적으로 같은 일이다 우리는 바로 여기,이 대답합니다. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> 이 곱슬 때문에 브래킷은, 함수 888 00:49:08,150 --> 00:49:10,480 우리는이 작업을 수행 할 수있어 첫 번째 인수에. 889 00:49:10,480 --> 00:49:12,170 우리는 그것을 반환 할 것입니다. 890 00:49:12,170 --> 00:49:14,815 그러나이 외부 반환은 그 모든 기능을 반환 891 00:49:14,815 --> 00:49:19,855 그 전체 익명 함수 우리는 단지 만들었습니다. 892 00:49:19,855 --> 00:49:21,689 다른 질문? 893 00:49:21,689 --> 00:49:23,980 좋아, 내가 알고하지 않습니다 너희들이 준비되어 894 00:49:23,980 --> 00:49:27,455 그러나 우리는 스위프트와도 미쳤 갈 수 있습니다. 895 00:49:27,455 --> 00:49:28,560 당신 준비? 896 00:49:28,560 --> 00:49:29,930 확인이 중대하다. 897 00:49:29,930 --> 00:49:35,310 >> 이제 실제 능력을 가지고 에, 스위프트에, 때문에 어떻게 모듈의 898 00:49:35,310 --> 00:49:39,650 프로토콜 기반의 방법과는에있다 우리 자신의 괴물 연산자를 정의합니다. 899 00:49:39,650 --> 00:49:44,060 이 경우처럼, 우리가 가진 없음 잘 exponentiation--에 대한 연산자, 900 00:49:44,060 --> 00:49:47,990 무언가의 힘을 수행. 901 00:49:47,990 --> 00:49:53,632 하지만, 스위프트의 새를 정의 할 수 있습니다 정확하게 그 작업을 수행 연산자. 902 00:49:53,632 --> 00:49:55,590 그래서이 경우에있어 여기 구문의 무리. 903 00:49:55,590 --> 00:49:59,980 그리고 나는 당신이 그것을 볼 수 있도록 할 것이다 집에서 만약 당신이 볼 때. 904 00:49:59,980 --> 00:50:06,890 그러나 우리는이 중위를 정의 운영자는, **, 이는 다음, 우리를 수 905 00:50:06,890 --> 00:50:09,840 그 무엇을 정의하여 기능 ** 실제로 906 00:50:09,840 --> 00:50:15,010 , 왼손을 적용합니다 않습니다 측면 및 오른쪽, 907 00:50:15,010 --> 00:50:21,190 그리고 그의 지수를 반환 왼쪽에서 오른쪽 편. 908 00:50:21,190 --> 00:50:24,850 >> 그리고 지금 갑자기 나는 모든 새로운 분자를 만들었습니다. 909 00:50:24,850 --> 00:50:29,490 그래서 2 ** 3은 제 2 전원을 의미한다. 910 00:50:29,490 --> 00:50:34,420 [마음 BLOWING 사운드]이을에 의해 자체는, 당신이처럼해야 911 00:50:34,420 --> 00:50:37,960 확인, 나사 C. 나는거야 스위프트 모든 방법. 912 00:50:37,960 --> 00:50:38,740 이 중대하다. 913 00:50:38,740 --> 00:50:40,140 이 꽤 훌륭하다. 914 00:50:40,140 --> 00:50:42,240 >> 하지만이 좋은 예입니다. 915 00:50:42,240 --> 00:50:45,570 그러나 나는 한 번 밖에 결코 없다 본 예의 실제로 916 00:50:45,570 --> 00:50:46,800 내 자신의 연산자를 정의했다. 917 00:50:46,800 --> 00:50:49,710 하지만 여전히, 그것은 보여줍니다 스위프트의 힘을 많이 918 00:50:49,710 --> 00:50:54,050 이것은 실제로 이유 정말 멋진. 919 00:50:54,050 --> 00:50:55,832 예, OK? 920 00:50:55,832 --> 00:50:57,790 청중 : 당신이 있다면 자신의 연산자를 정의, 921 00:50:57,790 --> 00:51:02,940 당신은 당신이 실수하지 않는 아는 방법 시도의 연산자를 만들 922 00:51:02,940 --> 00:51:06,040 C에서 어딘가에서, 같은 스위프트 어딘가에 숨겨진, 923 00:51:06,040 --> 00:51:12,210 모호한 같은 당신을 전에 보지 않았을 수 있습니다. 924 00:51:12,210 --> 00:51:15,050 >> DAN ARMENDARIZ : 당신이하려는 경우 그래서 자신의 연산자를 정의하려면 925 00:51:15,050 --> 00:51:20,970 정의의 위험이있다 기존 운영자를 통해 하나. 926 00:51:20,970 --> 00:51:24,870 즉, 상세 수준이로 전환 나는 우리가 가서 시간이 생각하지 않습니다. 927 00:51:24,870 --> 00:51:27,620 하지만 그 위험이있다. 928 00:51:27,620 --> 00:51:31,320 그리고 그것은 매우 이유는 사실이다 나는 캐럿 기호를 사용하지 않았다 929 00:51:31,320 --> 00:51:36,210 우리가 전력을 입력 할 때, 우리는 보통 4 작은 캐럿 5 것을 사용 930 00:51:36,210 --> 00:51:40,560 그렇게, 그냥 우리가있을 때 친구 또는 무엇이든을 Gchatting. 931 00:51:40,560 --> 00:51:43,660 그러나이 경우에, 실제로 충돌의 원인이됩니다. 932 00:51:43,660 --> 00:51:46,450 그래서 난 그냥 있기 때문에 그것을 방지 나는이 경우에 알고 있었 933 00:51:46,450 --> 00:51:50,430 즉, 그 충돌을 일으킬 것이다. 934 00:51:50,430 --> 00:51:52,270 >> 괜찮아. 935 00:51:52,270 --> 00:51:55,080 지금 불행하게도, 대한 지난 7 분 936 00:51:55,080 --> 00:51:57,410 나는 불어를 유지해야 당신의 마음을 조금. 937 00:51:57,410 --> 00:52:00,230 그래서 내가 당신을 표시 할 수 있습니다 다른 것들뿐만 아니라. 938 00:52:00,230 --> 00:52:03,710 >> 우리는 당신의 생각을 보여 주었다 이들 익명의 기능을 갖는, 939 00:52:03,710 --> 00:52:07,040 당신을 수있는 다음과 같은 폐쇄 종류의 주변 기능을 전달합니다. 940 00:52:07,040 --> 00:52:08,100 당신이 그들을 반환 할 수 있습니다. 941 00:52:08,100 --> 00:52:09,490 당신은 그것들을 조작 할 수 있습니다. 942 00:52:09,490 --> 00:52:11,790 당신은 미친 것들의 모든 종류의 작업을 수행 할 수 있습니다. 943 00:52:11,790 --> 00:52:14,850 >> 그러나 한 가지 그 도움이 될 일이 944 00:52:14,850 --> 00:52:19,740 능력은 반대하는 것입니다으로 이러한 기능을 반환에 945 00:52:19,740 --> 00:52:25,146 함수, 함수를 전달하는 다른 함수에 매개 변수로. 946 00:52:25,146 --> 00:52:30,430 당신은 지구에 왜 잘 생각 될 수 있습니다 나는 그런 일을할까요? 947 00:52:30,430 --> 00:52:33,660 >> 글쎄, 내가 원하는 것을 가정 해 봅시다 이 연산자를 취할 것을 나는 948 00:52:33,660 --> 00:52:40,260 일을 열심히 만들고 적용 다른 번호의 무리에 그 949 00:52:40,260 --> 00:52:41,770 배열. 950 00:52:41,770 --> 00:52:46,700 그래서이 경우에 나는의 배열을 가지고 1, 4, 7, 2, 5, 10, 56 integers--. 951 00:52:46,700 --> 00:52:48,080 그리고 나는 그들 모두를 두 배로 할 수 있습니다. 952 00:52:48,080 --> 00:52:50,430 방법이 우리가 일반적으로 것 그냥 쓰기하는 것입니다 953 00:52:50,430 --> 00:52:53,440 루프에 대한 간단한 그 그들 모두를 통해 반복 954 00:52:53,440 --> 00:52:57,140 그리고 어떤 종류의 수행 그들 평방 작업, 955 00:52:57,140 --> 00:53:02,700 새에 그 새 값을 입력 변수, 또는 오히려, 여기에 새로운 배열. 956 00:53:02,700 --> 00:53:07,370 그리고 출력값 결과는 다음 해당 배열의 모든입니다 957 00:53:07,370 --> 00:53:10,200 또는 오히려 그 모든 요소는 지금 제곱. 958 00:53:10,200 --> 00:53:12,680 >> 그리고 우리는 동일한 작업을 수행 할 수 그것을 큐빙에 대한 것, 959 00:53:12,680 --> 00:53:15,360 하지만 약간의 알람 벨 해야을 갈 960 00:53:15,360 --> 00:53:17,360 어쩌면이 있다는 말 어떤 방법으로 우리는 것 961 00:53:17,360 --> 00:53:19,860 이에게 조금 간단하게 할 수있는. 962 00:53:19,860 --> 00:53:21,130 그리고 사실이있다. 963 00:53:21,130 --> 00:53:25,320 우리가 만들 수 있다면 우리가 할 수있는 기능 964 00:53:25,320 --> 00:53:28,350 육식 동물, 함수로, 동의 하는가? 965 00:53:28,350 --> 00:53:30,350 이 경우에 그래서,을 이러한 인수 봐. 966 00:53:30,350 --> 00:53:33,220 우리는 두 배의 목록을 받아들이는 것입니다. 967 00:53:33,220 --> 00:53:35,030 그리고 우리는거야 기능을 적용합니다 968 00:53:35,030 --> 00:53:40,990 그 f를라는 변수에가는 두 번을하고 두 번을 반환합니다. 969 00:53:40,990 --> 00:53:43,320 전체 출력 이 전체 기능의 970 00:53:43,320 --> 00:53:47,310 라는 매퍼에 가고 더블라는 배열을 반환합니다. 971 00:53:47,310 --> 00:53:52,380 >> 이 다음에 저를 허용 무엇 수행은 그 목록을 반복하는 것입니다 972 00:53:52,380 --> 00:53:56,350 지금 같은 일을하지만, 각에 그 기능을 적용 973 00:53:56,350 --> 00:53:58,970 그 목록의 개별 값. 974 00:53:58,970 --> 00:54:00,750 그래서 내가 정말 무엇 F 모른다. 975 00:54:00,750 --> 00:54:02,010 그것은 나에게 중요하지 않습니다. 976 00:54:02,010 --> 00:54:06,530 하지만 두 번에 걸리는 너무 오래로, 그것에 몇 가지 작업을 수행 977 00:54:06,530 --> 00:54:08,640 다음 반환 두 번, 나는 그 것 978 00:54:08,640 --> 00:54:13,415 를 통해 그 기능을 매핑 할 수 목록에있는 모든 단일 요소입니다. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> 프로그래밍이 유형 인 호출 고차 함수 981 00:54:20,930 --> 00:54:24,440 여기서 우리는 기능을 전달하고 주위에 매개 변수로 982 00:54:24,440 --> 00:54:26,430 과 기능으로 일을. 983 00:54:26,430 --> 00:54:29,640 그것은 이들 모두를 복용처럼 일종의 우리가 CS50에서 배운 아이디어 984 00:54:29,640 --> 00:54:31,390 및 종류를 복용 의 다음 단계로. 985 00:54:31,390 --> 00:54:34,140 그리고이 모든 CS51 스타일의 물건입니다. 986 00:54:34,140 --> 00:54:37,080 그래서 우리는 깊이에 갈거야 같은 클래스에서 더. 987 00:54:37,080 --> 00:54:38,930 >> 하지만이 또한 여기에 중요한 우리 때문에 988 00:54:38,930 --> 00:54:42,010 기능을 많이 볼 스위프트에 사​​용되는 989 00:54:42,010 --> 00:54:45,590 그 본질적 않습니다 이 어디 우리가 990 00:54:45,590 --> 00:54:48,300 몇 가지 숫자, 숫자의 일부 배열입니다. 991 00:54:48,300 --> 00:54:50,850 우리는 통과거야 우리의 매퍼에 배열입니다. 992 00:54:50,850 --> 00:54:55,770 그리고 우리는 또한에가는거야 일부 기능을 건네 993 00:54:55,770 --> 00:54:57,950 우리는 이미 여기에 정의했다. 994 00:54:57,950 --> 00:54:59,690 그것은 광장이 될 것. 995 00:54:59,690 --> 00:55:02,220 그리고 우리는 다음에가는거야 그 숫자를 모두 광장 996 00:55:02,220 --> 00:55:04,710 여기에이 결과로 그 저장합니다. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> 따라서이 경우는 우리가 정의한 우리 자신의 기능은 매퍼했다. 999 00:55:11,000 --> 00:55:15,370 그러나 정확한 것은,이다 사실, 스위프트에 내장. 1000 00:55:15,370 --> 00:55:18,960 다양한이 있습니다 기능을지도했다. 1001 00:55:18,960 --> 00:55:21,520 지도 기능이있다, 이 기능을 줄일 수있다, 1002 00:55:21,520 --> 00:55:25,630 및 필터 기능이있어, 본질적 기능을 적용하는 1003 00:55:25,630 --> 00:55:30,782 모든 하나의 요소에 어떤 방법으로 그들을 수정 나열합니다. 1004 00:55:30,782 --> 00:55:34,510 >> 청중 : 당신이 변화하고 있기 때문에 그래서 다른 형식으로 데이터 1005 00:55:34,510 --> 00:55:36,134 function-- 통해 1006 00:55:36,134 --> 00:55:37,050 DAN ARMENDARIZ : 오른쪽. 1007 00:55:37,050 --> 00:55:39,420 네, 그래서 기능 우리는 수용하고 있다는 1008 00:55:39,420 --> 00:55:41,790 어떤 방식으로 데이터를 변환한다. 1009 00:55:41,790 --> 00:55:44,700 이 경우, 우리는 하나였다 그것을 제곱, 또는 우리가 그것을 큐빙했다, 1010 00:55:44,700 --> 00:55:50,060 또는 정말, 우리가 수행 할 수 전혀 아무런 동작을하지 않습니다. 1011 00:55:50,060 --> 00:55:54,150 >> 하지만 내가 다음 방법이 당신을 보여 드리죠 실제로 보는 것입니다. 1012 00:55:54,150 --> 00:55:56,681 그리고 다시, 나는 중이에요 시간의 비트. 그래서 나는 아니에요 1013 00:55:56,681 --> 00:55:59,430 온통 갈 수있을 것 여기에 상세하게 소스 코드. 1014 00:55:59,430 --> 00:56:00,721 하지만 그렇게하는 것이 좋습니다. 1015 00:56:00,721 --> 00:56:03,850 우리는 가능한 한 빨리 그것을 게시합니다 가능한이 이야기 후. 1016 00:56:03,850 --> 00:56:07,610 >> 그러나 당신이 보는 경우에, 우리는 번호 목록이 있다고 가정, 1017 00:56:07,610 --> 00:56:10,260 이 숫자의 배열 변수라는 숫자. 1018 00:56:10,260 --> 00:56:16,670 그리고 우리는이를 수행 할 그 숫자에 필터 작업. 1019 00:56:16,670 --> 00:56:19,730 따라서 필터는 높다 주문 기능이 1020 00:56:19,730 --> 00:56:24,660 또한 배열 및 함수를 사용할 수 있습니다. 1021 00:56:24,660 --> 00:56:28,760 그리고 그 모든 요소에 어레이는, 그 기능을 수행한다. 1022 00:56:28,760 --> 00:56:31,990 >> 그 함수가 반환하는 경우 사실, 그 항목을 유지합니다. 1023 00:56:31,990 --> 00:56:36,100 그 함수가 false를 돌려주는 경우, 그것은 그 항목을 버린다. 1024 00:56:36,100 --> 00:56:40,480 그리고 그것은 목록을 반환 그 모든 구성되어 있습니다 1025 00:56:40,480 --> 00:56:44,360 필터링 된 해당 항목의. 1026 00:56:44,360 --> 00:56:47,150 >> 그래서 다른 말로이다 같은 생각, 성적표. 1027 00:56:47,150 --> 00:56:50,800 우리는 등급의 다양한있을 수 있습니다 이 값라는 숫자에. 1028 00:56:50,800 --> 00:56:55,590 100, 70 등을 할 수 40, 등등 등등. 1029 00:56:55,590 --> 00:56:59,110 어떤이 필터가하는 예고하다 이는 구문 설탕입니다 1030 00:56:59,110 --> 00:57:01,310 익명 함수. 1031 00:57:01,310 --> 00:57:05,980 이 말을 익명 함수입니다 그 내가 받아들이있어 매개 변수 1032 00:57:05,980 --> 00:57:09,690 그 경우가 될 것입니다 70보다 큰 1033 00:57:09,690 --> 00:57:15,837 다음이 의미, true를 돌려줍니다 해당 항목이 필터에 보관됩니다. 1034 00:57:15,837 --> 00:57:17,920 그럼 좀하자 이에 대한보다 구체적인. 1035 00:57:17,920 --> 00:57:25,760 난 숫자의 배열이있는 경우 그리고, 100, 70, 40로 구성 1036 00:57:25,760 --> 00:57:29,730 나는이 필터를 수행 그 각각에 작업. 1037 00:57:29,730 --> 00:57:33,270 그래서 처음 100의 값이다. 1038 00:57:33,270 --> 00:57:36,770 100보다 크거나 같음 70 사실이다 1039 00:57:36,770 --> 00:57:41,950 (100)에서 유지된다는 것을 의미 이 배열의 새로운 사본. 1040 00:57:41,950 --> 00:57:44,290 (70)도 전달합니다. 1041 00:57:44,290 --> 00:57:46,020 그러나 (40)는하지 않습니다. 1042 00:57:46,020 --> 00:57:54,290 그래서 passingCount 무엇을 반환 요소 (100)과의 배열입니다 70-- 1043 00:57:54,290 --> 00:57:57,410 (100), 쉼표 (70). 1044 00:57:57,410 --> 00:57:59,870 이들은 단 두 있었다 보관 된 항목. 1045 00:57:59,870 --> 00:58:03,740 그리고 그 이유는 나는 빨리 겪은 상위의 이러한 종류의 많은 1046 00:58:03,740 --> 00:58:08,680 이 것이 일반적이기 때문에 일이 있습니다 당신은 스위프트 꽤 볼 것이다 것 1047 00:58:08,680 --> 00:58:16,810 자주, 어떤 작업을 수행 이 익명 함수 구문을 사용하여. 1048 00:58:16,810 --> 00:58:18,450 >> 멋진 물건이있다. 1049 00:58:18,450 --> 00:58:24,730 스위치, 스위프트 정말 강력하다 난 그냥 미친, 미친 강력한 같은 의미한다. 1050 00:58:24,730 --> 00:58:28,250 당신은 스위치를 사용 할 수 있습니다 당신은 실제로 적용 할 수 있습니다 1051 00:58:28,250 --> 00:58:33,160 종류의 미친 범위에, 그와 같은 멋진 물건을 할. 1052 00:58:33,160 --> 00:58:37,540 >> 그러나 지난 몇 분, 꽤 멀리 건너 뛰고 싶어 1053 00:58:37,540 --> 00:58:46,940 당신에게 방법의 구체적인 예를 도시 우리는 스위프트를 사용하여 iOS 앱에서 생성 할 수 있습니다. 1054 00:58:46,940 --> 00:58:49,040 그래서 때 당신이하고있는 이, 당신은 걸릴해야합니다 1055 00:58:49,040 --> 00:58:51,990 애플에 at-- 봐 문서, 그들은 1056 00:58:51,990 --> 00:58:56,084 정말 좋은 튜토리얼을 많이 가지고 첫 번째 응용 프로그램을 만들기위한. 1057 00:58:56,084 --> 00:58:58,250 그리고 이렇게하는 것이 좋습니다 그들이 당신을하기 때문에 1058 00:58:58,250 --> 00:59:04,110 무엇의 모든 단계를 정확하게에 이르기까지 아이폰 OS 응용 프로그램을 만들 클릭합니다. 1059 00:59:04,110 --> 00:59:07,290 >> 그러나 여기에서 우리는이 iOS 앱이 있습니다. 1060 00:59:07,290 --> 00:59:10,960 그리고 그것은 매우 간단한 응용 프로그램은 정말. 1061 00:59:10,960 --> 00:59:13,840 나는 이것을 실행하면, 내가 보여주지 당신이 어떻게 생겼는지. 1062 00:59:13,840 --> 00:59:19,480 본질적 이라곤 그 것이다 인터넷 JSON 파일에서 가져옵니다 1063 00:59:19,480 --> 00:59:22,300 것을 나는 서버에 저장하고있다. 1064 00:59:22,300 --> 00:59:26,310 그리고 그 JSON 파일 수 있도록 이미지를 정의 1065 00:59:26,310 --> 00:59:31,680 날을 통해 다음주기에 내 응용 프로그램, 내 웹 서버에서 이미지. 1066 00:59:31,680 --> 00:59:32,880 >> 그래서 나는 여기 getNextImage 있습니다. 1067 00:59:32,880 --> 00:59:37,100 또한, 인터넷에서 이미지를로드 다음 화면에 표시합니다. 1068 00:59:37,100 --> 00:59:38,200 >> 그래서 아주 간단합니다. 1069 00:59:38,200 --> 00:59:41,550 그러나 여기에서의 목표는 보여주는 것입니다 당신은 우리가 사물을 결합 할 수있는 방법 1070 00:59:41,550 --> 00:59:47,820 CS50의 후반 몇 주에서 실제 아이폰 OS 응용 프로그램으로. 1071 00:59:47,820 --> 00:59:53,140 즉, 아마도 하나 당신이 원하는 것 일 1072 00:59:53,140 --> 00:59:56,340 아이폰 OS 응용 프로그램이하는 것입니다 인터넷에서 데이터를 뽑을 수 1073 00:59:56,340 --> 00:59:59,070 사용자에게 몇 가지 정보를 표시합니다. 1074 00:59:59,070 --> 01:00:03,130 즉, 전체 지점입니다 여기에이 소스 코드. 1075 01:00:03,130 --> 01:00:07,890 >> 그래서에 대해 말할 수있는 많은있다 어떻게 실제 아이폰 OS 개발을 할 수 있습니다. 1076 01:00:07,890 --> 01:00:12,860 미친 구문 많이있다 우리는 아주 아직 보지 못한 것을 1077 01:00:12,860 --> 01:00:15,580 클래스처럼, 클래스는 실제로 것입니다. 1078 01:00:15,580 --> 01:00:19,470 우리는 거의 무시할 수 있습니다 당분간 것을. 1079 01:00:19,470 --> 01:00:23,250 >> 그러나 우리가 포함 된 것을 알 수 이 물건의 다양한 내 1080 01:00:23,250 --> 01:00:27,720 우리는 이미 같은 보았으므로 특정 이름을 가진 기능. 1081 01:00:27,720 --> 01:00:32,650 그리고 우리는 사람들을 줄 때 올바른 이름을 기능 1082 01:00:32,650 --> 01:00:36,530 즉, 실제로, 아이폰 OS에 의해 기대 이것은 약간의 마법을 느낀다. 1083 01:00:36,530 --> 01:00:40,300 하지만 당신은을 만들 때 아이폰 OS 응용 프로그램이 1084 01:00:40,300 --> 01:00:47,590 특정 기능의 이름은 그 전화 자체에 의해 호출된다 1085 01:00:47,590 --> 01:00:52,440 응용 프로그램이 시도로드로 실제로 프로세스를 만들 수 있습니다 1086 01:00:52,440 --> 01:00:54,787 응용 프로그램을 실행합니다. 1087 01:00:54,787 --> 01:00:58,120 그래서 다시, 많은 것들을 거기에 그 나는 우리를 위해 여기에 광택해야 1088 01:00:58,120 --> 01:01:00,570 이것에 대해 구체적으로 이야기합니다. 1089 01:01:00,570 --> 01:01:06,050 하지만 아마도 살펴 보시기 바랍니다 다른 아이폰 OS 세미나뿐만 아니라, 일부 1090 01:01:06,050 --> 01:01:09,290 수행 자습서 온라인의 기술의 더 나은 작업 1091 01:01:09,290 --> 01:01:11,030 특정 정보를 제공합니다. 1092 01:01:11,030 --> 01:01:15,760 >> 그러나 우리는 몇 가지를 볼 수 있습니다 여기에 코드에서 흥미 롭다. 1093 01:01:15,760 --> 01:01:17,950 우리가 문 경우가 있음을 알 수 있습니다. 1094 01:01:17,950 --> 01:01:20,400 그런데, 한 가지 중요한 if 문에 관한 일 1095 01:01:20,400 --> 01:01:24,860 라는 주위의 괄호 부울 표현식은 선택 사항입니다. 1096 01:01:24,860 --> 01:01:30,800 그러나 중괄호는 선택하지 않습니다 아무리 적거나 많은 코드 1097 01:01:30,800 --> 01:01:32,360 당신은 if 문에 있습니다. 1098 01:01:32,360 --> 01:01:38,670 당신은 if 문을 사용할 수 없습니다 스위프트의 중괄호없이. 1099 01:01:38,670 --> 01:01:41,000 >> 그리고 이것은, 잘, 종류의 바보입니다. 1100 01:01:41,000 --> 01:01:43,910 그러나 과거 이유가있다. 1101 01:01:43,910 --> 01:01:46,180 그것은 자신에서 당신을 저장하기로했다. 1102 01:01:46,180 --> 01:01:49,899 예를 들어 다음과 같이, 당신은 할 수 없습니다 그 주위에 중괄호를 제거 1103 01:01:49,899 --> 01:01:50,440 if 문. 1104 01:01:50,440 --> 01:01:52,730 사람들은 실제로 필요합니다. 1105 01:01:52,730 --> 01:01:54,480 그래서 내가하는 것이 좋습니다 이것 좀보세요. 1106 01:01:54,480 --> 01:01:56,230 하지만 하나 더있다 내가 원하는 것을 구성 1107 01:01:56,230 --> 01:02:02,640 스위프트에 대해 보여 그 비교 스위프트 2.0 새로운 1108 01:02:02,640 --> 01:02:08,460 스위프트의 이전 버전에, 이는 다음과 같다. 1109 01:02:08,460 --> 01:02:11,620 내가 여기에 넣어 않았다 어디 보자? 1110 01:02:11,620 --> 01:02:16,630 >> 이 함수 호출 fetchJSON,이 기능 1111 01:02:16,630 --> 01:02:23,450 그 JSON을 당겨에 대한 책임 너무 일이 URL에서 파일 1112 01:02:23,450 --> 01:02:26,310 내 CS50의 IDE에서 실행합니다. 1113 01:02:26,310 --> 01:02:28,580 난 그냥, 아파치를 시작 거기에 내 JSON 파일을 넣어, 1114 01:02:28,580 --> 01:02:32,110 나는 그 당길 수있어 사용하여 인터넷 데이터 1115 01:02:32,110 --> 01:02:36,430 이 기능이 URL, 이는 전화에 의해 제공됩니다. 1116 01:02:36,430 --> 01:02:40,490 그것은 의해 제공된 것 라이브러리 당신은 할 때 사용하는 1117 01:02:40,490 --> 01:02:43,140 당신은 어떤 iOS 앱 개발을 수행하고 있습니다. 1118 01:02:43,140 --> 01:02:49,690 >> 이 특이한 있다는 것을 여기에 주목 구문 구조는 가드를 불렀다. 1119 01:02:49,690 --> 01:02:53,530 정말 모든이에 스위프트 확인하는 방법입니다 1120 01:02:53,530 --> 01:02:56,870 몇 가지 가지고 전에 충족 1121 01:02:56,870 --> 01:03:00,000 함수의 나머지를 진행합니다. 1122 01:03:00,000 --> 01:03:04,260 그래서 사용 할 수 이 옵션 유형, 1123 01:03:04,260 --> 01:03:10,530 나는 URL로를 발견 할 수 이 NSURL 함수를 실행 1124 01:03:10,530 --> 01:03:16,640 및 URL에 그 저장 일정 한 다음 확인 1125 01:03:16,640 --> 01:03:20,820 URL이 전무 인 경우, 볼에 있기 때문에 옵션 형식을 반환하려고 했어요. 1126 01:03:20,820 --> 01:03:25,660 이 전무 있다면, 그때 나는 것 오류를 출력 한 후 반환한다. 1127 01:03:25,660 --> 01:03:29,970 >> 하지만 그 대신, 무엇 가드 수 있습니다 우리는 바로 그 일을 수행 1128 01:03:29,970 --> 01:03:34,550 그러나이 있는지 확인 실제로 경우 해당 URL 1129 01:03:34,550 --> 01:03:38,020 제대로 NSURL에 의해 설정되어 있습니다. 1130 01:03:38,020 --> 01:03:41,810 그리고 그 후,이면 이 스킵하고, 1131 01:03:41,810 --> 01:03:46,110 당신은 계속 할 수 URL이 제대로 정의 된. 1132 01:03:46,110 --> 01:03:48,830 그러나 경우이면 그 URL이 제대로 정의되지 않은, 1133 01:03:48,830 --> 01:03:52,550 이 함수는 오류를 반환하는 경우 또는 다른 예상치 못한 일 1134 01:03:52,550 --> 01:03:58,030 실제로,이 가드 구조를 발생 다음 출력이 오류로 우리를 수 1135 01:03:58,030 --> 01:04:00,390 즉시 반환한다. 1136 01:04:00,390 --> 01:04:00,890 네? 1137 01:04:00,890 --> 01:04:04,839 >> 청중 : 그래서 그것은 종류의 의 다음 다른 경우 같은? 1138 01:04:04,839 --> 01:04:07,130 DAN ARMENDARIZ : 그것은 종류의 , 예, 다음, 다른 경우와 같은 1139 01:04:07,130 --> 01:04:14,200 이 URL이 다음 것을 제외 이 아래 모든 것을 정의. 1140 01:04:14,200 --> 01:04:20,420 그러므로 그것을이 가드를 통과하면 실제로 데이터로 채워집니다 1141 01:04:20,420 --> 01:04:29,500 나머지에 사용될 함수에 소스 코드. 1142 01:04:29,500 --> 01:04:33,790 그래서 나는 당신이 거라고 생각 뿐만 아니라이 경비를보고 시작합니다. 1143 01:04:33,790 --> 01:04:36,670 그리고 염두. 1144 01:04:36,670 --> 01:04:46,270 >> 그러니 다른 몇보고 일, 여기에이 권리가 무엇이며, 1145 01:04:46,270 --> 01:04:53,377 당신이 생각, 그냥 무엇을 기반으로 우리는 이전에 대해 얘기했다? 1146 01:04:53,377 --> 01:04:56,650 >> 청중 :이 목록에서 실행합니다 생각 하는가? 1147 01:04:56,650 --> 01:04:59,100 >> DAN ARMENDARIZ : 그래서 그 가까이. 1148 01:04:59,100 --> 01:05:02,360 이것은 우리가 정의하는 기능입니다. 1149 01:05:02,360 --> 01:05:07,240 그리고 우리는 그 기능을 입력된다 여기에이 함수에 인수로. 1150 01:05:07,240 --> 01:05:09,120 >> 청중 : 무기 호 [들림]하지 않을 경우. 1151 01:05:09,120 --> 01:05:11,470 그래서 오른쪽 목록에서입니까? 1152 01:05:11,470 --> 01:05:15,450 >> DAN ARMENDARIZ : 오류가 nil이 아닌 경우, 그래서 내가 스크롤해야하므로 is--. 1153 01:05:15,450 --> 01:05:18,060 글쎄, 난 정말, 이제 볼 수 있도록 여기에서 오른쪽으로 스크롤합니다. 1154 01:05:18,060 --> 01:05:23,161 오류가되고있는 인수입니다 이 익명 함수에 전달. 1155 01:05:23,161 --> 01:05:24,410 이 익명의 기능입니다. 1156 01:05:24,410 --> 01:05:25,480 이 이름이없는. 1157 01:05:25,480 --> 01:05:29,850 그러나 우리는이 세 가지를 받고 있습니다 인수, 데이터, 응답 및 오류. 1158 01:05:29,850 --> 01:05:33,590 그리고 그렇게, 무효 반환하는 것입니다 그것은 아무것도 반환하지 않을거야. 1159 01:05:33,590 --> 01:05:37,910 그리고이 내용입니다 그 기능. 1160 01:05:37,910 --> 01:05:41,961 그리고 우리는 그 내부에 액세스 할 수 있습니다 이러한 주장의 각 기능. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> 그래서 회오리 바람이다 언어의 투어. 1163 01:05:48,679 --> 01:05:50,470 그러나 나는이와 희망, 희망이 걸릴 1164 01:05:50,470 --> 01:05:54,490 자습서의 일부를 살펴 스위프트와 아이폰 OS 개발에 특정, 1165 01:05:54,490 --> 01:05:57,481 당신은로 이동 특히 애플의 개발자 웹 page-- 1166 01:05:57,481 --> 01:05:59,980 그들은 정말 좋은을 많이 가지고 자습서 당신은 시작한다. 1167 01:05:59,980 --> 01:06:05,010 그러나 이야기의 희망 그냥이 시간 구문에 대한 자체 주신 1168 01:06:05,010 --> 01:06:08,760 당신은 충분히 그와 함께 시작합니다. 1169 01:06:08,760 --> 01:06:12,950 >> 우리는이 소스를 모두 게시 할 예정입니다 세미나 웹 사이트에 코드 1170 01:06:12,950 --> 01:06:17,800 가능한 한 빨리, 또한 슬라이드로서 그래서 당신은 모든 사람을위한 기준이있다. 1171 01:06:17,800 --> 01:06:20,530 당신의 프로젝트를하지만 행운. 1172 01:06:20,530 --> 01:06:23,640 그리고 주셔서 대단히 감사합니다. 1173 01:06:23,640 --> 01:06:26,990 >> [박수 갈채] 1174 01:06:26,990 --> 01:06:28,026