Swift/기초 문법
클로저 기본
수줌이
2021. 2. 10. 13:00
⭐ 클로저?
-
클로저는 실행가능한 코드 블럭입니다.
-
함수와 다르게 이름정의는 필요하지는 않지만, 매개변수 전달과 반환 값이 존재 할 수 있다는 점이 동일합니다.
-
함수는 이름이 있는 클로저입니다.
-
일급객체로 전달인자, 변수, 상수 등에 저장 및 전달이 가능합니다.
1. 클로저 문법
-
클로저는 중괄호{ }로 감싸져있습니다.
-
괄호를 이용해 파라미터를 정의합니다.
-
-> 을 이용해 반환 타입을 명시합니다.
-
"in" 키워드를 이용해 실행 코드와 분리합니다.
{(매개변수 목록) -> 반환 타입 in
/* 실행 코드 */
}
2. 클로저 사용
// 함수를 사용한다면
func sumFunction(a: Int, b: Int) -> Int {
return a + b
}
var sumResult: Int = sumFunction(a:1, b:2)
print(sumResult) // 3
// 클로저의 사용
var sum: (Int, Int) -> Int = { (a:Int, b:Int) -> Int in
return a + b
}
sumResult = sum(1, 2)
print(sumResult) // 3 (함수를 사용할때와 같음)
// 함수는 클로저의 일종이므로
// sum 변수에는 당연히 함수도 할당할 수 있습니다
sum = sumFunction(a:b:)
sumResult = sum(1, 2)
print(sumResult) // 3
3. 함수의 전달인자로서의 클로저
-
클로저는 주로 함수의 전달인자로 많이 사용됩니다.
-
함수 내부에서 원하는 코드블럭을 실행 할 수 있습니다.
let add: (Int, Int) -> Int
add = { (a: Int, b: Int) -> Int in
return a+b
}
let substract: (Int, Int) -> Int in
substract = { (a: Int, b: Int) -> Int in
return a-b
}
func calculate(a: Int, b: Int, mtd: (Int, Int) -> Int) -> Int {
return mtd(a,b)
}
var after_calculate : Int
after_calculate = calculate(a: 50, b: 10, method: add)
// add(a,b)
print(after_calculate) // 60
// 혹은 아래와 같이 써도 됨
after_calculate = calculate(a: 50, b: 10, method: {( left: Int, right: Int) -> Int in
return left*right
})
print(after_calculate) // 500
이 글은 Boostcourse에서 배운 내용을 정리하여 작성하였습니다.