본문 바로가기
728x90

Swift12

프로그래밍 패러다임 - 함수형 프로그래밍 함수형 프로그래밍이란? 미리 만들어진 함수를 이용해서 사이드-이펙트(부작용)가 없도록 선언형으로 프로그래밍 하는 것이다. 미리 만들어진 함수를 사용하지 않고 프로그래밍하는 것(처음배우는 프로그래밍 방식)을 명령형 프로그래밍이라고 하는데 먼저 명령형 프로그래밍을 사용한 방식은 // 아래의 배열 중에, 홀수만 제곱해서, 그 숫자를 다 더한 값은? var numberArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] var j = 0 for i in numberArray { if i % 2 != 0 { j = j + (i * i) } } print( j ) // 결과값: 165 간단한 내용이지만 다른 개발자가 코드만 본다면 중간과정을 하나하나 뜯어 고쳐봐야 알 수 있다. 하지만 선언형 프로.. 2022. 11. 5.
컬렉션타입 - Dictionary(딕셔너리) Dictionary(딕셔너리)란? 컬렉션 타입의 한 종류로 데이터를 키와 값으로, 하나의 쌍으로 만들어 관리하는 순서가 없는 컬렉션이다. - [대괄호]로 묶는다. - 키값은 유일해야한다.(구분하는 요소이기 때문에), 값(value)은 중복 가능하다. - 한개의 딕셔너리에는 동일한 자료형 쌍의 데이터만 담을 수 있다. - 키값은 Hashable해야한다. Hashable이란? 어떤 타입이 Hashable이라는 뜻은 해당 타입을 해시함수의 input값으로 사용가능하다는 뜻이다. (Swift에서는 String, Int, Double등 기본타입이 모두 Hashable한 타입이다.) 딕셔너리는 내부적으로 순서가 정해져 있지 않다. 그래서 배열보다 검색속도가 빠르다.(배열처럼 순서대로 값을 찾는 방식이 아닌 키값으로.. 2022. 11. 5.
컬렉션타입 - Array(배열) 시작 전에, 컬렉션 타입에 대해 이해를 하면 좋다. 컬렉션 타입이란 데이터를 효율적으로 관리하기 위한 자료형으로 Swift에서 사용하는 여러개의 데이터를 한꺼번에 다루는 바구니 타입이다. 컬렉션 타입의 종류로는 Array(배열), Dictionary(딕셔너리), Set(집합) 이 세가지가 있다. 그 중, Array(배열)에 대해 알아보자. 1. Array(배열) - 데이터를 순서대로 저장하는 컬렉션으로 - [대괄호]로 묶는다. 배열 인덱스의 시작은 0부터이다. (이건 모든 프로그래밍 언어의 공통적인 사항이다.) - 각각의 데이터는 요소(element)라고 지칭한다. - 1개의 배열에는 동일한 타입의 데이터만 담을 수 있다. - (순서가 있기 때문에) 값은 중복이 가능하다. 배열의 각 요소(element).. 2022. 11. 3.
Result Type 시작전에 Result Type을 알아보기 전에 먼저 에러처리, 제네릭문법에 대해 알고 있어야 이해하기 훨씬 수월하다. (에러처리에 대한 또 다른 방법이기 때문이다.) Result Type이란? Swift5 부터 새로 도입된 개념으로 타입안에 결과를 넣어 결과를 가질 수 있는 개념이다. 이 말의 의미를 조금더 직설적으로 표현하자면 Result Type은 열거형으로 되어있다! 라는 의미이다. // 타입 enum Result { // 성공 케이스 case .success(let data): print("결과값은 \(data)입니다.") // 실패 케이스 case .failure(let error): print(error) } 에러가 발생하는 경우, 에러를 따로 외부로 던지는 것이 아니라, return 자체를 .. 2022. 10. 29.
프로그래밍 패러다임 - 프로토콜지향 프로그래밍 시작전에, 패러다임이란? 어떤 한 시대 사람들의 견해나 사고를 지배하고 있는 이론적 틀이나 개념의 집합체 Swift의 프로그래밍 패러다임은 총 3가지다. 1. 객체지향 프로그래밍 2. 프로토콜지향 프로그래밍 3. 함수형 프로그래밍 이 3가지중 프로토콜지향 프로그래밍에 대해서 알아보자. 프로토콜지향 프로그래밍이란? 다른언어에는 없던 개념으로, Swift가 처음으로 내세우는 개념이다. 나오게 된 배경으로는 객체지향 프로그래밍에서의 단점 때문인데, 먼저 객체지향 프로그래밍에서의 장점은 상속이 가능하다는 점이다. 하지만 1. 다중상속이 불가능하고 2. 상위클래스의 메모리구조를 반드시 따라야 하며 (이 과정에서 필요하지 않은 속성/메서드가 상속된다.) 3. 클래스에서만 상속이 가능하다 는 단점이 있다. 이러한 단.. 2022. 10. 28.
접근제어(Access Control) 기본개념 코드의 세부 구현 숨기는것이 가능하도록 만드는개념으로 객체지향프로그래밍의 특징 중 하나인 은닉화가 가능해진다. Swift 접근제어의 5가지 open - 다른모듈에서도 접근가능 / 상속 및 재정의도 가능 (제한 낮음) / 클래스를 가장 넓힌다면 public - 다른모듈에서도 접근가능(상속 / 재정의 불가) / 구조체를 가장 넓힌다면(상속을 할 수 없기 때문에) internal - 같은 모듈내에서만 접근가능(디폴트) fileprivate - 같은 파일 내에서만 접근가능 private - 같은 scope내에서만 접근가능 (제한 높음) 모듈이란? 프레임워크, 라이브러리, 앱 등 import해서 사용할 수 있는 외부의 코드 접근제어를 가질 수 있는 요소 1) 타입(클래스/구조체/열거형/스위프트 기본타입 .. 2022. 10. 28.
728x90