Day 8 - 2023.01.12
클로저 문법.swift
// 기본 문법
{(매개변수 목록) -> 반환타입 in
실행코드
}
// 매개변수 목록이 없을 때
{() -> 반환타입 in
실행코드
}
// 반환타입이 없을 때
{(매개변수 목록) -> Void in
실행코드
}
// 둘다 없을 때
{() -> Void in
실행코드
}
//sum 이라는 상수에 클로저 할당
let sum:(Int, Int) -> Int = {(a: Int, b: Int) in
return a + b
}
let sumResult: Int = sum(1,2)
print(sumResult) // 출력 : 3
// 상수에 클로저 할당
let add: (Int, Int) -> Int
add = { (a: Int, b: Int) in
return a + b
}
// 상수에 클로저 할당
let substract: (Int, Int) -> Int
substract = { (a: Int, b: Int) in
return a - b
}
// 상수에 클로저 할당
let divide: (Int, Int) -> Int
divide = { (a: Int, b: Int) in
return a / b
}
// 함수의 전달인자로서의 클로저 사용(method)
func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
return method(a, b)
}
var calculated: Int
calculated = calculate(a: 50, b: 10, method: add)
print(calculated) // 출력 : 60
calculated = calculate(a: 50, b: 10, method: substract)
print(calculated) // 출력 : 40
calculated = calculate(a: 50, b: 10, method: divide)
print(calculated) // 출력 : 5
// 따로 클로저를 상수/변수에 넣어 전달하지 않고 함수를 호출 할 때 클로저를 작성하여 전달 할 수 도 있다.
calculated = calculate(a: 50, b: 10, method: { (left: Int, right: Int) -> Int in
return left * right
})
print(calculated) // 500