드디어 대망의 클로저... 스위프트 공식문서를 찾아보니 Group code that executes together, without creating a named function.라고 한다. 명명된 함수 없이 실행되는 코드의 그룹이 클로저라는 것이다. Closures are self-contained blocks of functionality that can be passed around and used in your code. 클로저는 자체적인 기능을 가진 블록이라고 한다.
// String을 반환하는 클로저
let myName: String = {
// myName으로 들어간다
return "Swift"
}()
print(myName)
출력값 : Swift
myName은 String값을 가지고 있고 Swift라는 값을 반환한다.
// 클로저 정의
let myJob : (String) -> String = {(name : String) -> String in
return "\(name) 개발자"
}
print(myJob("Swift"))
출력값 : Swift 개발자
함수와 모양이 흡사하다. String값을 받아서 String형태로 반환한다. 따라서 Swift는 name의 값이 되고 Swift 개발자라는 String값을 반환한다! 그리고 그것을 출력해 주는 것이 print(myJob("Swift")
let myJobLogic : (String) -> Void = { (name: String) in
print("\(name) 개발자")
}
myJobLogic("Swift")
출력값 : Swift 개발자
String값을 받았지만 반환하는 값이 없을 때 Void를 써줄 수 있다. name의 값으로 Swift를 받으면 이것을 Swift 개발자라는 String값으로 출력해준다.
말로 설명을 할 수 있을 것 같지만, 뭔가 아리송한 부분이 있다. Swift공식 문서로 함수와 클로저를 공부해 봐야겠다.
'Swift > Swift 기초 문법' 카테고리의 다른 글
[기초] 옵셔널 (Optionals) (0) | 2023.04.05 |
---|---|
[기초] 튜플 (Tuples) (0) | 2023.04.05 |
[기초] 제네릭 (0) | 2023.03.26 |
[기초] 프로퍼티 옵저버, 함수 매개변수 이름 (0) | 2023.03.26 |
[기초] 클래스 vs 스트럭트 (0) | 2023.03.26 |