[SWIFT]클로저 매개변수 식별자 $0,$1

힐링힐링·2023년 9월 7일
0

SWIFT 문법

목록 보기
5/26

클로저란?

Swift에서 클로저(Closure)는 일급 객체로서, 코드 블록을 감싸고, 변수나 상수에 저장하거나 함수의 매개변수로 전달하거나 함수의 반환 값으로 사용할 수 있는 독립적인 코드 조각입니다. 클로저는 다른 말로 익명 함수 또는 람다 함수라고도 불립니다.

클로저는 주로 함수 내에서 조작 또는 처리해야 하는 코드를 간결하게 나타내는 데 사용됩니다. Swift에서 클로저는 다음과 같이 세 가지 주요 형태로 나타납니다.

1.Global Functions(전역함수)

func add(_ a: Int, _ b: Int) -> Int {
    return a + b
}

2.Nested Function(중첩함수)

함수 내부에 정의된 클로저

func makeIncrementer(incrementAmount: Int) -> (Int) -> Int {
    func incrementer(number: Int) -> Int {
        return number + incrementAmount
    }
    return incrementer
}

3.Closure Expressions(클로저 표현식)

이름 없이 코드 블록만 포함하는 클로저입니다. 주로 다른 함수의 인자로 전달하거나 변수/상수에 저장됩니다.

let addClosure: (Int, Int) -> Int = { (a, b) in
    return a + b
}

예시

1. 예시

클로저는 {}(중괄호)를 사용하여 정의되며, 입력 매개변수와 반환 타입은 클로저 표현식 또는 함수의 매개변수로 전달될 때 컴파일러에 의해 유추될 수 있으므로 일반적으로 생략됩니다. 예를 들어:

let multiply: (Int, Int) -> Int = { $0 * $1 }

위의 코드에서 $0와 $1은 클로저의 입력 매개변수를 나타냅니다. 클로저 표현식을 사용하면 간결한 코드를 작성할 수 있습니다.

2. 예시

클로저는 주로 배열의 map, filter, reduce와 같은 고차 함수(higher-order function)와 함께 사용되어 컬렉션을 조작하고 데이터를 처리하거나 비동기 작업을 처리하는 데 유용합니다.

let numbers = [1, 2, 3, 4, 5]

// 배열의 각 요소를 제곱하여 새로운 배열을 생성
let squaredNumbers = numbers.map { $0 * $0 }

// 배열에서 짝수만 필터링하여 새로운 배열을 생성
let evenNumbers = numbers.filter { $0 % 2 == 0 }

// 배열의 모든 요소를 더하여 합을 계산
let sum = numbers.reduce(0) { $0 + $1 }

print(squaredNumbers) // [1, 4, 9, 16, 25]
print(evenNumbers)   // [2, 4]
print(sum)           // 15
profile
블로그 이전합니다 https://james-kim-tech.tistory.com/

0개의 댓글