목록iOS/Swift 문법 (80)
大器晩成
고차함수란?함수를 파라미터로 사용하거나, 함수의 실행 결과를 함수로 리턴하는 함수를 말합니다.일반적으로 함수형 언어를 지향하는 언어들에 기본적으로 구현되어 있으며, 크게 3가지가 있습니다.map / filter / reduece (참고: forEach, compactMap, flatMap)Sequence, Collection 프로토콜을 따르는 컬렉션(배열, 딕셔너리, 세트 등)에 기본으로 구현되어 있습니다.Optional 타입에도 구현되어 있습니다. 1. map기존의 배열 등의 각 아이템을 새롭게 매핑해서 새로운 배열을 리턴하는 함수입니다.각 아이템을 매핑/변형해서 새로운 배열을 만들 때 사용합니다.리턴 타입은 어떤 타입으로든 가능합니다.// 예제 1let numbers = [1, 2, 3, 4, 5]..
[@escaping]일반적으로 함수의 실행이 종료되면 파라미터로 쓰이는 클로저도 삭제됩니다.함수에 인수로 전달하지만, 함수가 반환된 후 호출되는 클로저 함수를 탈출(escape)한다라고 말합니다.@escaping 키워드는 클로저를 제거하기 않고 함수에서 탈출시키도록 하며, 클로저가 함수의 실행 흐름을(스택프레임)을 벗어날 수 있도록 합니다. non - escaping clousre함수내부에서, 단순하게 실행하고 종료할 때 (클로저를 힙에 저장할 필요가 없습니다.)func hello(clousre: (String) -> ()) { let msg = "Hello Swift" clousre(msg) }hello { msg in print(msg)}일반적으로 함수의 실행이 종료되..
스택에 저장되는 값(value) 타입이 있고, 힙의 저장되는 참조(Reference) 타입이 있습니다.스위프트의 기본 타입(Int, String, Double..)이나, 튜플 구조체 열거형 등이 값 타입에 해당되며, 스택의 스코프가 종료되면 메모리에서 자동으로 제거됩니다.클래스나, 클로저는 참조 타입에 해당되며, 실질적인 값은 힙에 저장되며, 스택에서는 힙의 주소를 저장하고 있습니다. 참조타입의 메모리 관리는 ARC를 통해 메모리 관리를 하고 있습니다. 캡처 값클로저는 컨텍스트에서 상수와 변수를 캡처할 수 있습니다. 그러면 클로저는 상수와 변수를 정의한 범위가 더 이상 존재하지 않더라도, 해당 상수와 변수의 값을 참조하고 수정할 수 있습니다.스위프트에서 값을 캡처할 수 있는 가장 간단한 클로저 형태는 중..
[문법 최적화(간소화)]문맥상에서 파라미터와 리턴 벨류 타입 추론 (Inferring Type Form Context)싱글 익스프레션인 경우(한 줄) return 키워드 생략 가능 (Implicit Returns from Single-Expression Closures)아규먼트 이름 축약 (Shorthand Argument Names) -> $0, $1, $2 등트레일링 클로저: 함수의 마지막 아규먼트(전달 인자)로 클로저가 전달되는 경우, 소괄호 생략 가능 트레일링 클로저//Apple 공식문서func someFunctionThatTakesAClosure(closure: () -> Void) { // function body goes here closure()}// Here's how you..