<p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">실제 코드를 복사해 봤습니다.</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><span style="color:#bb2ca2;">func</span> findIndexOfString (string: <span style="color:#703daa;">String</span>, array: <span style="color:#703daa;">String</span>[]) -> <span style="color:#703daa;">Int</span>? { // 1. ?</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><span class="Apple-tab-span" style="white-space:pre;"> </span>...</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">}</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><span style="color:#bb2ca2;">var</span> neighbors = [<span style="color:#d12f1b;">"Alex"</span>, <span style="color:#d12f1b;">"Anna"</span>, <span style="color:#d12f1b;">"Madison"</span>, <span style="color:#d12f1b;">"Dave"</span>]</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:#31595d;"><span style="color:#bb2ca2;">let</span><span style="color:#000000;"> index = </span>findIndexOfString<span style="color:#000000;">(</span><span style="color:#d12f1b;">"Anna"</span><span style="color:#000000;">, </span><span style="color:#4f8187;">neighbors</span><span style="color:#000000;">)</span></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><span style="color:#bb2ca2;">if</span> <b><span style="color:#bb2ca2;">let</span> indexValue = <span style="color:#4f8187;">index</span></b> { // 2. optional binding</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> <span style="color:#3d1d81;">println</span>(<span style="color:#d12f1b;">"Hello, </span>\(<span style="color:#4f8187;">neighbors</span>[indexValue])<span style="color:#d12f1b;">"</span>)</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">} <span style="color:#bb2ca2;">else</span> {</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:#d12f1b;"><span style="color:#000000;"> </span><span style="color:#3d1d81;">println</span><span style="color:#000000;">(</span>"Must've moved away"<span style="color:#000000;">)</span></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">}</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">실제 코드를 복사해 오니 보기 참 좋네요. 근데, 콩트는 더 이상 생각이 안 납니다. 점 점 복잡해져서.ㅠ.ㅠ</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">1. Int를 보면 ?가 붙어 있습니다. 이거 뭐지?? 이걸 optional 이라고 합니다. 간단히 말하면 옵션.. 흠... 옵션이죠.</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">그러니까 있을수도 있고 없을 수도 있다. 뭐 이런 겁니다.값이 있을수도 있고 없을 수도 있고.. 그래서 초기값은 nil</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">2. 이걸 어떻게 사용하냐면, 있으면 if문 실행하는 거고 없으면 else문으로 갑니다. 그러니까, nil 인지 확인할 필요가 없습니다. </p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">오.. 좋다. nil, -1, null 등등 짜증 났었는데, 어떤 type도 ?이 가능하니 optional binding 쓰면 간단하게 코드 짤 수 있겠네. 편하네..</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">이 보다 더 읽기 쉽고, 짜기 편한 게 있겠어!!! ㅋㅋㅋㅋㅋㅋㅋㅋㅋ</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;line-height:normal;font-family:Menlo;"><b><font size="2">있습니다.</font><span style="font-size:11px;"> </span></b></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><b><br></b></p> <p style="margin:0px;line-height:normal;font-family:Menlo;"><b><font size="2">addressNumber = paul.residence?.address?.buildingNumber?.toInt()</font></b><span style="font-size:11px;"> </span></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">헐.. 이건 또 뭐냐? </p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">optional chaining이라는 건데, 클래스나 구조 멤버가 optional 일 경우 ?.을 이용해서 없을 경우 nil을 리턴해 줍니다.</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">옛날 같았으면, if 에 if 에 if 를 거치면서 쭉 들어가서 값 넘겨받아야 되는데, ? 이거 하나 붙여주면 됩니다. 오... 아무튼 신세계.</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">WWDC 비디오 시청 중인데 신기한 게 많네요. pattern은 이해가 좀 안 됩니다. ... 머리가 굳었어. ㅠ.ㅠ </p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">함 봐 보시길.</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><br></p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"><span style="color:#bb2ca2;">func</span> stateFromPlist(list: <span style="color:#703daa;">Dictionary</span><<span style="color:#703daa;">String</span>, <span style="color:#703daa;">AnyObject</span>>) -> <span style="color:#703daa;">State</span>? {</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> </p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> <span style="color:#bb2ca2;">switch</span>(list[<span style="color:#d12f1b;">"name"</span>], list[<span style="color:#d12f1b;">"population"</span>], list[<span style="color:#d12f1b;">"abbr"</span>]) {</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> <span style="color:#bb2ca2;">case</span> (.Some(<span style="color:#bb2ca2;">let</span> listName <span style="color:#bb2ca2;">as</span> <span style="color:#703daa;">NSString</span>),</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> .Some(<span style="color:#bb2ca2;">let</span> pop <span style="color:#bb2ca2;">as</span> <span style="color:#703daa;">NSNumber</span>),</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> .Some(<span style="color:#bb2ca2;">let</span> abbr <span style="color:#bb2ca2;">as</span> <span style="color:#703daa;">NSString</span>))</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> <span style="color:#bb2ca2;">where</span> abbr.length ==<span style="color:#272ad8;">2</span>:</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> <span style="color:#bb2ca2;">return</span> State(name: listName, population: pop, abbr: abbr)</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> <span style="color:#bb2ca2;">default</span>:</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> <span style="color:#bb2ca2;">return</span> nil</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> }</p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;"> </p> <p style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;">}</p> <div><br></div> <div>switch 문을 보면 동시에 세 개를 받아서.. "동시에 세개" 그걸 case 에서 세 개를 전부 optional로 check 해서 주소 길이가 2인 경우에 State 그 주를 넘겨주가나 없으면 nil을 넘긴다는 건데.. 그러니까 tuple에 optional에 pattern을 섞어치는 건데.. 너무 머리가 아파서, 같이 아파 보자는 의미로.. 올린 건 절대 아니고, 이런 것도 가능하다 뭐 그럼 겁니다.</div> <div><br></div> <div>그럼.. 다음 비디오 보러 갈게요. </div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.