swift
-
[Swift] 18. Inheritance - 상속Programming Language/Swift 2022. 6. 12. 09:41
Swift에서의 상속은 클래스를 다른 타입과 구분짓는 근복적인 행위다. 상속에 대해 알아보자. Inheritance — The Swift Programming Language (Swift 5.7) Inheritance A class can inherit methods, properties, and other characteristics from another class. When one class inherits from another, the inheriting class is known as a subclass, and the class it inherits from is known as its superclass. Inheritance is docs.swift.org 클래스는 다른 클래스에서 메서드..
-
[Swift] 17. Subscript - 서브스크립트Programming Language/Swift 2022. 6. 12. 09:31
Swift에서 타입의 기능을 확장(extend)하는 방법은 많다. 기능, 속성을 물려받아 수직 확장할 수 있는 상속, 타입에 기능을 추가해 수평적으로 확장할 수 있는 익스텐션도 있다. 다양한 확장 기법을 통해 타입을 더욱 유용하게 사용할 수 있게 하는 방법을 알아보자. Subscripts — The Swift Programming Language (Swift 5.7) Subscripts Classes, structures, and enumerations can define subscripts, which are shortcuts for accessing the member elements of a collection, list, or sequence. You use subscripts to set and..
-
[Swift] 16. Monad - 모나드Programming Language/Swift 2022. 6. 5. 09:12
모나드 개념에 대해 알아보자. 모나드는 함수형 프로그래밍 패러다임에서 등장하는 용어다. 함수형 프로그래밍에서, monad는 프로그램 요소 (function)들을 조합하고 그들의 리턴 값을 추가적인 연산을 통해 감싸는 구조의 소프트웨어 디자인 패턴이다. 무슨 말인지 이해하기 어려운데, 모나드를 이해하기 위해서는 값을 어딘가에 포장한다는 개념을 이해하는 것에서 출발한다. Swift에서 모나드를 사용한 예 하나는 옵셔널이다. 옵셔널은 값이 있을지, 없을지 모르는 상태를 포장한 것이다. 모나드는 순서가 있는 연산을 처리할 때 사용되는 디자인 패턴으로 부작용을 관리하기 위해 함수형 프로그래밍 언어에서 사용된다. 모나드를 깊게 판다면 끝도 없이 복잡해지고, 모나드를 설명하는 글들도 제각기 모나드가 무엇인지 설명하는..
-
[Swift] 15. Higher-order function 고차함수 기초 (map, filter, reduce)Programming Language/Swift 2022. 6. 5. 09:06
Swift의 고차함수 map, filter, reduce를 알아보자. Swift를 사용하는 개발자라면 고차 함수는 꼭 알고 있어야 한다. Swift는 함수를 일급 객체로 취급하기 때문에, 함수를 다른 함수의 전달인자로 취급할 수 있다. Higher-order function은 인자로 하나 이상의 함수를 받거나 함수를 리턴하는 함수다. map map은 컨테이너가 담고 있는 모든 요소에 자신이 받은 함수를 적용한 뒤 업데이트 된 컨테이너를 반환한다. 즉 기존 데이터를 변형하는데 많이 사용한다. 기존 컨테이너의 값은 변하지 않고, 값이 업데이트된 새로운 컨테이너가 반환된다. Swift에서 map은 배열, 딕셔너리, 집합, 옵셔널 등에 사용할 수 있다. Sequence, Collection 프로토콜을 따르는 타..
-
[Swift] 14. Optional Chaining - 옵셔널 체이닝Programming Language/Swift 2022. 6. 5. 09:02
Swift의 옵셔널 체이닝에 대해 알아보자. Optional Chaining — The Swift Programming Language (Swift 5.6) Optional Chaining Optional chaining is a process for querying and calling properties, methods, and subscripts on an optional that might currently be nil. If the optional contains a value, the property, method, or subscript call succeeds; if the optional is docs.swift.org Optional Chaining 옵셔널 체이닝은 nil일 수 있는 프..
-
[Swift] 13. Closure - 클로저Programming Language/Swift 2022. 6. 5. 08:58
Swift에서 중요한 클로저를 알아보자. 애플은 자사 프레임워크를 모두 객체지향 프로그래밍 패러다임을 기반으로 구현했다. 새로운 언어 Swift에 굳이 함수형 프로그래밍 패러다임을 도입할 필요가 없었는데, 애플이 Swift를 발표할 때 직접 함수형 프로그래밍 언어라고 Swift를 소개했듯이 애플이 Swift를 만들었을 때 객체지향 프로그래밍 패러다임만큼이나 함수형 프로그래밍 패러다임에 중점을 뒀음을 알 수 있다. 함수형 프로그래밍 패러다임의 장점은 대규모 병렬처리에 유리하다, 스레드에 비교적 안전하다, 콜백 등 연관 처리에 있어서 코드가 분산되는 것을 최소화할 수 있다는 것이다. 기존 객체지향 프로그래밍 패러다임만을 사용했을 때 불편했던 부분을 Swift의 함수형 프로그래밍 패러다임으로 개선할 수 있다는..
-
[Swift] 12. 접근 제어Programming Language/Swift 2022. 5. 23. 00:23
Swift에서 은닉화를 가능하게 하는 접근 제어에 대해 알아보자. 객체지향 프로그래밍 패러다임에서 은닉화는 중요한 개념 중 하나다. 이를 access control을 통해 구현할 수 있다. Access control는 다른 소스 파일과 모듈에서 내 코드에 접근하는 것을 제어한다. 이를 통해 코드의 구현 부분을 감출 수 있고, 접근되어야 하는 부분은 노출시킬 수 있다. Modules and Source Files Swift는 접근 제어 모델은 모듈과 소스 파일의 개념에 기반한다. Module 모듈은 배포할 코드의 한 유닛이다. 이 배호팔 코드라는 건 하나의 유닛으로 빌드되고 전달되거나 Swift의 import 키워드로 다른 모듈에서 import할 수 있는 프레임워크나 앱을 의미한다. 쉽게 생각해서 프레임워..
-
[Swift] 11. 인스턴스 생성 및 소멸Programming Language/Swift 2022. 5. 23. 00:17
Swift에서 인스턴스를 생성하는 방법과 인스턴스가 소멸할 때 무슨 일이 일어나는지 알아보자. Initialization 초기화는 클래스, 구조체, 열거형의 인스턴스를 사용하기 위해 준비하는 과정이다. 초기화를 할 때 아래 과정이 포함된다. 인스턴스의 저장 프로퍼티에 초깃값을 설정한다. 새로운 인스턴스가 사용되기 전에 설정되어야 하는 부분을 설정하거나 다른 초기화를 진행한다. 초기화는 initializer를 통해 진행하는데, 특정 타입의 인스턴스를 생성하기 위해 호출되는 특별한 메서드다. Swift의 이니셜라이저는 값을 리턴하지 않는다. 이니셜라이저의 주 역할은 처음 사용되기 전에 인스턴스가 잘 초기화되는 것을 보장하는 것이다. 클래스의 인스턴스는 이니셜라이저에 더불어 deinitializer를 구현할 ..