❗️정확하지 않을 수 있음
💡Function(Global)
✔️이름이 있다
✔️func 키워드 필요
💡Closure
✔️이름 없다
✔️func 키워드 필요 없음
⭐️공통점
✔️인자 받을 수 있다.
✔️값 리턴할 수 있다.
✔️변수로 할당할 수 있다.
✔️First Class Type이다.
// Ex코드
/*
{ (param) -> return type in
statement
....
}
*/
// Ex1: Very Simple Closure
let verySimpleClosure = {
}
verySimpleClosure()
// Ex2: 코드블록을 구현한 Closure
let verySimpleClosure = {
print("Hello, 클로져, 코로나 하이!")
}
verySimpleClosure()
// Ex3: 인풋 파라미터를 받는 Closure
let verySimpleClosure: (String) -> Void = { name in
print("Hello, 클로져, 코로나 하이! 나의 이름은 \(name) 입니다!")
}
verySimpleClosure("찐찐")
// Ex4: 값을 리턴하는 Closure
let verySimpleClosure: (String) -> String = { name in
let message = "iOS 개발 짱짱맨, \(name)님 경제적 자유를 얻으실 거에요!"
return message
}
let result = verySimpleClosure("찐찐")
print(result)
// Ex5: Closure를 파라미터로 받는 함수 구현
func someSimpleFunction(verySimpleClosure: () -> Void) {
print("함수에서 호출이 되었어요")
}
someSimpleFunction(verySimpleClosure: {
print("헬로 코로나 from closure")
})
func someSimpleFunction(verySimpleClosure: () -> Void) {
print("함수에서 호출이 되었어요")
verySimpleClosure()
}
someSimpleFunction(verySimpleClosure: {
print("헬로 코로나 from closure")
})
// Ex6: Trailing Closure
func someSimpleFunction(message: String, verySimpleClosure: () -> Void) {
print("함수에서 호출이 되었어요. 메세지는 \(message)")
verySimpleClosure()
}
someSimpleFunction(message: "로나로나코로나", verySimpleClosure: {
print("헬로 코로나 from closure")
})
someSimpleFunction(message: "로나로나코로나") {
print("헬로 코로나 from closure")
}