//기본 클로저 표현
func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
return method(a,b)
}
var result: Int
//마지막 매개변수 클로저를 함수 밖에 구현
result = calculate(a: 10, b: 15) { (left: Int, right: Int) -> Int in
return left + right
}
print(result) //결과 : 25
//calculate 함수의 method 매개변수의 반환타입 생략
result = calculate(a: 10, b:25, method: { (left: Int, right: Int) in
return left + right
})
print(result)
//후행클로저에서 반환타입 생략
result = calculate(a: 7, b:19) { (left: Int, right: Int) in
return left + right
}
print(result)
result = calculate(a: 8, b: 22, method: {
return $0 + $1
})
print(result) //결과 : 30
//후행 클로저
result = calculate(a: 3, b: 13) {
return $0 + $1
}
print(result) //결과 : 16
//"return" 생략
result = calculate(a: 6, b: 9) {
$0 + $1
}
//한 줄 표현
result = calculate(a: 4, b: 2) { $0 + $1 }
※ 과도한 축약은 가독성이 떨어지므로 주의