본문 바로가기

Swift

(19)
[Swift] Generic Generic CPP에서 템플릿을 썼었는데 Swift에서는 Generic이 있습니다. ㅎ Generic 말그대로 일반화입니다. 동적으로 타입을 정의해주기 때문에 Array, Dictionary 등 collection타입은 주로 Generic으로 만들어 졌습니다. 왜냐 Collection 타입에 Int, String, Float등 다양한 타입이 들어갈 수 있잖아요!! 기본적인 swap 함수도 Generic으로 구현되어 있습니다. 함수뒤에 쓰고 타입으로 제네릭을 쓸 부분에 BLABLA를 써넣으면 됩니다. 제가 하면서 재밌었던 부분 여러 프로토콜들이 있습니다. 예를 들어 여기 a, b파라미터의 값을 swap시켜주는 함수를 만들었습니다. 만약 a, b가 같을 때는 값을 바꿔주지 않으려면 같을 때 == 를 넣어줍..
[Swift] - Operator 최근 코딩 테스트를 치면서 2차원 배열의 좌표를 다루는 문제가 있었습니다. 거기서 2차원 좌표를 [Int] 인트 배열로 표현했는데 [1, 2] + [2, 3] = [3, 5] 로 만들어야 되는 상황이 있었습니다. 기존의 배열에서는 [1, 2] + [2, 3] 을 하면 [1, 2, 2, 3]이 되버려서 Point라는 구조체를 만들어서 operator를 추가시키려고 하였습니다. ㅎ 짠! 여기서 제가 만든 Point(x: 1, y: 2) + Point(x: 2, y: 3)을 하려면 연산자를 추가해줘야 합니다. 아래부터 추가되는 연산기호는 제가 만든 Point구조체 안에 있어서 static이 붙습니다. 짠!! 후후~ 이제 된다 !! 이렇게 +를 만들고나니 +=는 어떻게 구성될까.. 궁금해서 제가 만들어 봤습니다..
[Swift] Dictionary - init, grouping, by Dictionary의 init인 grouping by을 써보자! 먼저 단순한 Int 배열들로 grouping을 보여 드리겠습니다. 출력 Dictionary의 init으로 value 값으로 grouping의 sequnce가 들어가고 키 값으로는 by파라미터의 값이 들어갑니다. 편하게 Collection을 만들 수 있슴당.!! 그리고 카뎃들 정보로 팀별로 dictionay를 분리하고 싶다!! 타입과 함께 출력을 해볼까요!! 출력 key 값은 by 파라미터의 타입 value 값은 grouping 파라미터의 타입 이 들어가는 것을 확인했습니다. Swift활용 굳굳 맨 ~
[Swift] compactMap, flatMap 공부하다가 compactMap과 flatMap을 알았습니다. 일단 써봅시다.! flatMap과 compactMap 둘다 1차원 배열들을 옵셔널 바인딩 해주긴 하지만. 1차원 배열에서 사용 출력값 그리고 경고창.. flatMap과 compactMap 둘다 1차원 배열들을 옵셔널 바인딩 해주긴 하지만 옵셔널 바인딩 하는 부분은 compactMap을 써라! 라고 하는 경고창 같아요. flatMap과 compactMap의 기능을 확실히 분할한 것입니다.!! 2차원 배열에 사용 출력 2차원 배열에서 flatMap은 배열을 1차원으로 만들어주고 바인딩 시켜주지 않았습니다. 2차원 배열에서 compactMap은 그냥 map과 다를게 없네요.. 그냥 그대로! 플랫하고 컴팩트하게 출력 결론 배열을 flatten하게 만들..
[Swift] struct, class - remind struct와 class structure - value 타입 - stack영역에 저장 스위프트는 대부분 struct로 이루어져있다. 일단 struct로 만들고 추후 클래스로 포팅이 쉽기 때문에.. 상황에 따라 바꾸는 것도 좋다. class - reference 타입 - heap영역에 저장 - 상속 가능 class의 데이터 자체는 heap에 저장되있지만 저장되 있는 heap주소를 stack영역에서 부름 ! (참조 타입!! C언어의 포인터를 이렇게 발전시킨거구나 싶어서 재밌다.) 하나의 객체가 필요하고 여러 대상에 의해 접근되고 변경이 필요한 경우 사용. remaind 후기 최근 OS공부를 했어서 그런지 메모리 관리하는 부분이 뭔가 재밌어서 remind했습니다. ㅎ
[Swift] Completion, Closure Excaping Completion Completion, CompletionHandling, CompletionBlock로 된 파라미터 이름을 iOS를 하면 많이 접합니다. 이러한 파라미터 들은 Closure를 파라미터로 받으며 함수가 반한된 후 (끝나고) Closure를 실행 시킵니다. Closure Escaping 추가적으로 Completion을 쓸 때 Escaping을 쓰기도 합니다. Closure 타입 앞에 @escaping 이라고 적으면 됩니다. 함수가 반환된 후 실행되는 Closure. 함수의 Scope를 벗어나 외부에서 사용 가능합니다. (ex: 함수 내부에서 만들어진 Closure를 함수 외부에 따로 만든 배열에 넣고 추후 함수 외부에서 배열을 사용해서 함수 내부에서 만든 Closure를 사용 가능.) +..
[Swift] First Class Type First Class Type - 변수에 할당할 수 있다. - 인자로 받을 수 있다. - 리턴 할 수 있다. - 비교 연산 할 수 있다. (Swift에서 권장 안함) 우리가 사용하는 대부분의 변수들은 First Class Type이며 함수나 클로져 또한 First Class Type이다.
[Swift] Where, Switch, Binding 평소에 안쓰던 문법들을 다시 보면 되게 새롭습니다. 그중 Where문을 간단히 공부해보겠습니다. Where where문은 크게 2개로 쓰입니다. 1. for문 while문 switch문등에서 조건을 추가하여 나타낼 수 있습니다. 2. 그리고 프로토콜의 extension같은 타입에도 조건을 추가할 수 있습니다. 간단한 예시를 보면 위와 같은 for문에서 where이 없다면 1부터 10까지 출력하게됩니다. 하지만 where 절에 i % 2 == 1 즉 홀수 일 때 true가 되는 조건이 추가가 되어서 10까지의 홀수만 출력이 됩니다. 이렇게 코드의 길이를 단축 시킬 수 있습니다.! switch문의 case에도 where문을 넣을 수 있습니다. 맨 위의 case는 wildcard를 쓰며 where 절의 num..