매개변수로서 클로저를 사용하는 것은 Swift에서 강력한 기능 중 하나입니다.
매개변수로 클로저 타입 정의하기 : 함수 매개변수에 클로저를 전달하기 위해서는 해당 매개변수의 타입으로 클로저를 명시적으로 정의해야 합니다. 클로저 타입은 매개변수 타입으로 '(매개변수 타입) -> 반환타입' 형태로 작성됩니다.
ex) (Int) -> String 타입의 클로저는 하나의 Int 매개변수를 받아 String 타입의 값을 반환
함수 내에서 클로저 실행하기 : 매개변수로 전달된 클로저는 함수 내에서 실행될 수 있습니다. 함수 내에서 클로저를 호출하거나, 다른 변수에 할당하여 나중에 실행할 수 있습니다. 매개변수로 전달된 클로저를 실행하기 위해서는 매개변수 이름 뒤에 소괄호 '()'를 붙여 호출합니다
func calculate(a: Int, b: Int, operation: (Int, Int) -> Int) -> Int {
return operation(a, b)
}
let addition: (Int, Int) -> Int = { (a, b) in
return a + b
}
let subtraction: (Int, Int) -> Int = { (a, b) in
return a - b
}
let result1 = calculate(a: 5, b: 3, operation: addition) // 8
let result2 = calculate(a: 10, b: 4, operation: subtraction) // 6
클로저가 매개변수이면 블록으로 처리가 가능합니다.
first(변수)를 쓰고 싶지 않을때, _ 언더바 사용
참고(출처) : 개발하는 정대리, 야곰(Swift 5)