본문 바로가기

Swift27

Nested Types(중첩 타입)에 관하여 Nested Types(중첩 타입) -공식문서에 따르면 열거형은 종종 특정 클래스나 구조체의 기능을 지원하기 위해 만들어지는 경우가 있다. 이와 비슷하게 복잡한 타입의 컨텍스트 내에서 사용하기 위해 유틸리티 클래스나 구조체를 정의하는게 편리할 수 있다. 이를 위해 Swift에서 제공해주는 것이 Nested Type이다. (지원하는 타입의 정의 내에서 클래스, 구조체 및 열거형을 중첩할 수 있다.) -야곰님의 Swift 문법책에 따르면 열거형은 특정 클래스나 구조체의 기능을 명확히 사용하기에 용이하다. 하지만 굳이 클래스나 구조체 외부에서 열거형을 사용할 필요가 없을 경우도 있다. 즉, 클래스나 구조체 내부에서 자신의 역할을 충실히 할 수 있도록 역할을 구분짓는 열거형을 선언해주고 자신의 내부에서만 사용할.. 2023. 3. 13.
타입 캐스팅에 관하여 타입 캐스팅 -Swift의 타입 캐스팅은 인스턴스의 타입을 확인하거나, 해당 인스턴스를 슈퍼 클래스나, 하위 클래스인 것처럼 취급하는 방법이다. -is와 as 연산자를 통해 구현하며, 두 연산자를 통해 값의 타입을 확인하거나 다른 타입으로 전환할 수 있다. 또한 타입이 프로토콜을 준수하고 있는지 여부도 확인할 수 있다. Latte와 Americano 클래스에서 Coffee를 상속 받고 있다. 이 관계의 포함도를 그려보면 ? 그림을 보면 Coffee 클래스가 갖는 특성들을 Latte나 Americano가 모두 포함하고 있지만, Coffee는 Latte나 Americano의 특성들을 이용할 수 없다. 다시 말하면 Coffee는 Latte나 Americano인 것처럼 할 수 없지만, 반대로 Latte나 Ame.. 2023. 3. 13.
모나드에 관하여 Swift는 함수형 프로그래밍 패러다임에서 파생된 기능이나 개념이 종종 등장하기 때문에 이런 개념들을 익히지 못하면 Swift 를 제대로 다루지 못한다. 단순히 고차함수의 사용, 함수의 일급객체 등의 개념 뿐만 아니라 모나드에 대해서 알고 있으면 함수형 프로그래밍을 좀 더 깊이 이해할 수 있다. 모나드 -모나드는 특정 기능이 아닌 디자인 패턴 혹은 자료구조라고 할 수 있다. -함수형 프로그래밍에서 모나드는 순서가 있는 연산을 처리할 때 자주 활용하는 디자인 패턴이다. -모나드의 성질을 갖는 타입이나 함수를 모나딕 타입 혹은 모나딕 함수 등으로 표현한다. 모나드의 조건 -모나드가 갖춰야 하는 조건은 다음과 같다. 1. 타입을 인자로 받는 타입(특정 타입의 값을 포장) 2. 특정 타입의 값을 포장한 것을 반.. 2023. 3. 10.
고차함수에 관하여 고차함수 -Swift에서 함수는 일급 객체로 취급되는데, 일급 객체의 특징 중 하나로 함수를 다른 함수의 인자로 받을 수 있다는 것이다. 고차함수는 함수를 매개변수로 갖는 함수를 말한다. -Swift의 대표적인 고차 함수는 맵, 필터, 리듀스가 있다. 1. map(_:) 맵 -배열(Array)이나 리스트와 같은 컬렉션에 포함된 각 요소에 대해 특정 함수를 적용한 후, 그 결과를 모아 새로운 컬렉션을 생성하는 함수다. 클로저를 인자로 사용하고, 원래 배열의 각 요소에 해당 클로저 구현부를 적용한 결과를 반환해줌. -Array, Dictionary, Set, Optional 에서 사용할 수 있다. (좀 더 구체적으로 말하면 Swift의 Sequence, Collection 프로토콜을 채택하는 타입과 옵셔널은.. 2023. 3. 6.
Closer에 관하여2 클로저의 값 획득(Capture) -클로저는 자신이 정의된 위치의 주변 문맥을 통해 상수나 변수를 캡쳐할 수 있다. 따라서 값 캡쳐를 통해 주변에 정의한 상수나 변수가 존재하지 않더라도, 클로저 바디에서 해당 값을 수정하거나, 참조할 수 있다. 예제를 통해 클로저의 캡쳐가 무엇인지 알아보자. 클로저 capture의 바디를 보면 외부 변수인 number를 사용하고 있다. 이것을 "클로저에 의해 number값이 캡쳐되었다" 라고 표현한다. 클로저의 값 캡쳐 방식 -클로저는 값을 캡쳐할 때 Value나 Reference 타입에 관계없이 Reference 캡쳐를 실행한다. 위 예제에서 보았듯이 number는 Int타입 -> 구조체 -> Value 타입이다. Value 타입은 값을 복사해서 저장하는 것이 일반적인.. 2023. 3. 2.
Closer에 관하여 클로저 -클로저는 어떤 기능을 하는 코드를 블록으로 모아놓은 것을 말한다. -우리가 아는 함수도 클로저에 포함되어 있는 개념이다. 클로저의 종류 Named Closure : 이름이 있는 클로저로 우리가 알고있는 함수를 말한다.(클로저이지만 우리에게 익숙한 함수로 불릴 뿐) UnNamed Closure : 이름이 없는 클로저 지금 배우고자 하는 것은 이름이 없는 클로저이다. 기본 클로저 표현 -기본 클로저는 다음과 같이 표현한다. 클로저의 표현식은 클로저 헤드와 클로저 바디로 나누어진다. 1) 클로저 헤드 : { (매개변수 : 매개변수 타입) -> return 반환타입 2) 클로저 바디 : //실행구문 } 클로저 중간에 있는 in 키워드는 헤드와 바디를 구분지어준다. 매개변수와 반환타입을 생략한 클로저 -.. 2023. 3. 1.