고차함수란? 다른 함수를 전달인자로 전달받거나, 함수 실행의 결과를 함수로 반환하는 함수 말이 너무 어렵다... 단순하게는? 매개변수로 함수를 가지는 함수 특히 컬렉션(배열, 딕셔너리, 집합) 정리하는 기능으로 많이 사용합니다 ㄴ 왜 쓰나요? 함수형 프로그래밍의 장점을 사용하기 위해서! 코드 간결 코드 재사용 쉬움 컴파일러 최적화 측면에서의 성능 차이 멀티스레드 환경에서 부작용 방지 Map(_:) 기존에 있는 데이터를 변경할 때 사용해요 매개변수로 전달된 함수를 실행하고, 그 결과값을 반환합니다 기존값에 영향을 주지 않아요. 복사된 값을 반환하기 때문에 원본 값에 문제가 생기지 않아요 func map(_ transform: (Self.Element) throws -> T) rethrows -> [T] ..
iOS
상속 Inheritance 클래스가 다른 클래스로부터 메서드, 프로퍼티 등을 물려받는 것 Class의 상속 상속은 클래스에서만 할 수 있다 클래스는 단일 상속만 허용한다 메서드, 프로퍼티 등 기타 특징을 상속 가능하다 Sub-Classing 기존에 있던 클래스를 기반으로 새로운 서브 클래스를 만드는 것 == 상속 class Human { var name: String? var age: Int? var job: String? } class Teacher: Human { var subject: String? } Teacher 클래스는 Human 클래스를 상속받았다 Human의 멤버인 name, age, job을 사용할 수 있다 let teacher: Teacher = .init() teacher.name -..
프로퍼티 감시자 - 특징 프로퍼티의 값이 변할때, 동작을 수행한다 값이 바뀌기 직전에 호출되는 willSet 값이 바뀐 뒤에 호출되는 didSet 매개변수 이름이 지정되지 않았다면, 명시적으로 newValue 와 oldValue로 사용할 수 있다 willSet과 didSet 둘 중 하나만 작성해도 된다! var currentValue:Int = 100 { willSet { print("\(currentValue)에서 \(newValue)로 변경될 예정입니다") } didSet(oldData) { print("\(oldData)가 \(currentValue)로 변경되었습니다") } } 변경하려는 값이 현재 값과 같아도 동작한다 함수, 메서드, 클로저, 타입 등의 지역/전역 변수에 모두 사용 가능 - 예시..
애플 스위프트 공식 문서의 첫 문단 더보기 Swift uses Automatic Reference Counting (ARC) to track and manage your app’s memory usage. In most cases, this means that memory management “just works” in Swift, and you don’t need to think about memory management yourself. ARC automatically frees up the memory used by class instances when those instances are no longer needed. 스위프트는 당신의 앱 메모리 사용을 추적하고 관리하기 위해 자동 참조 세기(AR..
연산 프로퍼티 - 특징 저장 공간을 가지지 않음 직접 값을 가지지는 않지만, 저장 프로퍼티의 값을 읽어서 연산 실행 항상 var로 선언해야 함 선언할 때 반드시 자료형을 명시해야 함 var westernAge: Int { get { // 값을 연산하여 리턴할 때 return koreanAge - 1 } set (inputValue) { // 값을 저장(연산)할 때 var koreanAge = inputValue + 1 } } - set의 매개변수 이름은 생략가능 명시적으로 newValue 로 접근해서 사용할 수 있음 var westernAge: Int { get { return koreanAge - 1 } set { var koreanAge = newValue + 1 } } - get-only 읽기 전..
구조체와 클래스에 대한 설명 ⬇️⬇️ https://yy-dev.tistory.com/24 [Swift] 구조체 Struct / 클래스 Class 구조체 struct 구조체이름 { } 클래스 class 클래스이름 { } - Camel Case 구조체 이름의 첫 글자는 대문자로 시작한다 ❌ 언더바는 사용하지 않는게 좋다 ❌ Properties 내부에서 정의된 변수, 상수 특정 yy-dev.tistory.com 구조체 / 열거형 - 값 타입을 사용하는 경우 연관된 몇몇의 값들을 모아서 하나의 데이터 타입으로 표현하고 싶은 경우 다른 객체 또는 함수 등으로 전달될 때 참조가 아니라 복사(값 복사) 할 경우 자신을 상속할 필요가 없거나, 다른 타입을 상속 받을 필요가 없는 경우 스위프트에서의 사용 스위프트의 ..
열거형 Enum - 특징 유사한 종류의 여러 값을 한 곳에 모아서 정의한 것 / 예시) 요일, 월, 계절 등 enum 자체가 하나의 데이터 타입 / 대문자 카멜케이스를 사용하여 이름을 정의 각 case는 소문자 카멜케이스로 정의 각 case는 그 자체가 고유의 값 (각 case에 자동으로 정수값이 할당되지 않음) 각 case는 한 줄에 개별로도, 한 줄에 여러개도 정의할 수 있음 enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 // ... } // 예제 1 enum Weenend { case mon case tue case wen case tur case fri case sat, sun } // 예제 2 enum Fruit { case apple case orange,..
구조체 struct 구조체이름 { } 클래스 class 클래스이름 { } - Camel Case 구조체 이름의 첫 글자는 대문자로 시작한다 ❌ 언더바는 사용하지 않는게 좋다 ❌ Properties 내부에서 정의된 변수, 상수 특정 값을 저장하기 위함 Method 내부에서 정의된 특정 기능을 담당하는 함수 - Properties& Method 구조체 EX struct Resolution { var width = 0 var height = 0 func desc() -> String { return "Resolution 구조체" } } 저장 프로퍼티 - width, height 0으로 초기화 되었으므로 타입추론규칙에 의해 Int 데이터 타입으로 추론된다 - Properties& Method 클래스 EX cl..
일급 객체 First-Class object - 조건 전달 인자로 전달 가능할 것 변수나 데이터 구조 안에 저장할 수 있을 것 함수 자체를 변수에 집어넣음 반환 값으로 사용 가능할 것 고유하게 구별이 가능할 것 변수나 상수처럼 사용할 수 있어야 한다 swift는 함수형 언어로서, 함수를 일급 객체로 취급한다 함수를 호출, 전달, 반환하는 동작만으로 프로그램의 구현이 가능하다 - 중첩함수 함수 내부에 작성된 함수 = 내부함수 내부 함수를 포함하는 바깥쪽 함수 = 외부함수 외부함수가 종료되면 내부 함수도 함께 종료 = 내부함수의 생명 주기 내부함수는 외부함수를 거치지 않으면 접근 불가능, 외부 코드로부터 차단된다 = 함수의 은닉성 내부함수는 선언된 외부함수에서만 참조할 수 있다 내부 함수에 외부 함수의 지역..
함수 Function - 특징 독립적으로 처리될 수 있는 부분을 분리하여 구조화 한 객체 여러번 호출하여 사용할 수 있다 Swift 는 함수형 프로그래밍 패러다임을 채택하고 있기 때문에, 함수형 프로그래밍의 특징을 이해하는 것은 매우 중요⭐⭐⭐ 일반 함수 프로그래밍 언어/프레임워크 에서 제공하는 함수 기본적인 데이터 처리, 연산을 수행하기 위해 사용 ex) print(), reversed() 사용자 정의 함수 개발자가 필요에 의해 직접 만든 함수 - 사용자 정의 함수 func 키워드 사용 함수명 첫 글자는 영어 / _ 언더바로 시작 매개변수가 여러개라면 , 콤마 를 통해 구분 / 매개 변수가 없다면 소괄호를 빈 채로 유지한다 반환타입(returnType)과 반환값의 데이터 타입은 일치해야 한다 - 함..
Optional - 특징 스위프트가 잠재적 오류를 다루는 방법 안전성을 높이기 위해 사용 nil을 사용할 수 있는 타입 = 옵셔널 - nil 값이 없음을 의미 0이나 ""(공백)과는 다르다 옵셔널 타입만 nil을 반환할 수 있다 - 선언 자료형 뒤에 물음표를 붙인다 옵셔널 타입으로 자료형 선언 시, 자동으로 nil 로 초기화 된다 값을 대입할 때는 일반 변수처럼 생각하고 다루어도 괜찮다 - 값 처리 옵셔널 타입 결과값은 그대로 사용할 수 없다 / 연산을 지원하지 않는다 옵셔널 해제 / 옵셔널 언래핑 :: 옵셔널 객체 내부 값을 추출하는 과정 명시적 해제 강제적 해제 비강제적 해제 묵시적 해제 컴파일러에 의한 자동 해제 연산자를 사용한 자동 해제 - 옵셔널 강제 해제 옵셔널 타입의 값 뒤에 ! 느낌표를 붙..
배열 Array - 특징 순서가 있는 리스트 형식의 값 순서 = 인덱스 index (정수) 인덱스는 맨 앞을 0으로 시작하여 순서대로 부여된다 하나의 배열 안 아이템의 데이터타입은 전부 같아야 한다 선언 시 배열 타입을 명확히 정의해야 한다 - 순회 탐색 순서가 있는 데이터를 처음부터 끝까지 차례대로 읽어들이는 것 예시 - 반복문 배열 탐색 시, 루프 상수에 담기는 값은 인덱스가 아니라 배열의 아이템 그 자체이다. - 아이템 추가 append(_:) 입력값을 배열의 맨 뒤에 추가 insert(_: at:) 입력값을 원하는 위치에 직접 추가 append(contentOf:) 한 번에 여러개의 값을 입력 - 범위 연산자 이용, 인덱스 참조 일정 범위의 배열 아이템을 한 번에 읽어들일 때 사용한다 집합 Set..