Programming Language
-
[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를 구현할 ..
-
[Swift] 10. 프로퍼티와 메서드Programming Language/Swift 2022. 5. 23. 00:10
Swift의 프로퍼티와 메서드에 대해 알아보자. Methods — The Swift Programming Language (Swift 5.6) Methods Methods are functions that are associated with a particular type. Classes, structures, and enumerations can all define instance methods, which encapsulate specific tasks and functionality for working with an instance of a given type. Classes, struc docs.swift.org Properties — The Swift Programming Language (S..
-
[Swift] 9. 구조체와 클래스Programming Language/Swift 2022. 5. 22. 23:56
Swift의 구조체와 클래스에 대해 알아보자. Structures and Classes — The Swift Programming Language (Swift 5.6) Structures and Classes Structures and classes are general-purpose, flexible constructs that become the building blocks of your program’s code. You define properties and methods to add functionality to your structures and classes using the same syntax you docs.swift.org 지금까지 (1~8) 공부한 내용은 Swift를 이해하는 데 꼭..
-
[Swift] 8. Optional - 옵셔널Programming Language/Swift 2022. 5. 17. 23:08
Swift의 핵심 기능인 optional에 대해 알아보자. Optional은 Swift의 세 가지 특징(Safe, Fast, Expressive) 중 Safe를 문법으로 보장하는 기능이다. 옵셔널은 값이 없을 수 있는 상황에서 사용한다. 옵셔널은 두 가지 경우를 표현할 수 있다. 값이 있다. -> 값이 있는 경우 옵셔널을 unwrap 해서 해당 값에 접근할 수 있다. 값이 없다. 그렇다면 이런 값이 있는지, 없는지에 대한 상태를 표시해야 하는 이유는 무엇일까? 흔히 Java나 C 등 다른 언어를 사용할 때 데이터가 null일 경우를 대비해 코딩을 한다. 가끔 null처리를 하지 않아 에러가 발생하는 경우도 있었을 것이다. Swift는 이런 경우에서 옵셔널을 사용해서 이렇게 미연에 일어날 수 있는 실수를 ..