클로저란?
코드에서 전달 및 사용할 수 있는 독립 기능 블록이며, 일급 객체의 역할을 할 수 있습니다.
일급객체란?
전달 인자로 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있으며, 함수의 반환 값이 될 수 도 있습니다.
Named Closure, Unnamed Closure
func hello() {
print("안녕하세요")
}
let hello2 = { print("안녕하세요") }
/////
/*
{ (매개 변수) -> 리턴 타입 in
실행 구문
}
*/
let hello = { () -> () in //() -> ()
print("hello") //()
}
hello() //hello
let hello2 = { (name: String) -> String in //(String) -> String
return "Hello, \(name)" //"Hello, Gunter"
}
hello2("Gunter") //"Hello, Gunter"
func doSomething(closure: () -> ()) {
closure()
}
doSomething() {
print("hello2") //hello2
}
doSomething() {
print("hello3") //hello3
}
doSomething (closure: { () -> () in
print("hello") //hello
})
func doSomething2() -> () -> () {
return { () -> () in //() -> ()
print("hello4") //()
}
}
doSomething2()() //hello4
func doSomething2(success: () -> (), fail: () -> ()) {
}
doSomething2{
//code
} fail: {
//code
}
//코드 단계별로 간단하게 줄이기
func doSomething3(closure: (Int, Int, Int) -> Int) {
closure(1, 2, 3)
}
doSomething3(closure: { (a, b, c) in
return a+b+c //6
})
doSomething3(closure: {
return $0 + $1 + $2 //6
})
doSomething3(closure: {
$0 + $1 + $2 //6
})
doSomething3() {
$0 + $1 + $2 //6
}
doSomething3 {
$0 + $1 + $2 //6
}
'개발 > Ios(Swift)' 카테고리의 다른 글
IOS 스위프트(Swift) 문법 - 고차함수 (0) | 2021.08.26 |
---|---|
IOS 스위프트(Swift) 문법 - try-catch (0) | 2021.08.25 |
IOS 스위프트(Swift) 문법 - 옵셔널 체이닝 (0) | 2021.08.25 |
IOS 스위프트(Swift) 문법 - 열거형 (0) | 2021.08.25 |
IOS 스위프트(Swift) 문법 - 익스텐션 (0) | 2021.08.25 |