Swift/Swift 기초 문법

[기초] 클로저

hyunjuntyler 2023. 3. 26. 03:42

드디어 대망의 클로저... 스위프트 공식문서를 찾아보니 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

myNameString값을 가지고 있고 Swift라는 값을 반환한다.

// 클로저 정의
let myJob : (String) -> String = {(name : String) -> String in
    return "\(name) 개발자"
}

print(myJob("Swift"))

출력값 : Swift 개발자

함수와 모양이 흡사하다. String값을 받아서 String형태로 반환한다. 따라서 Swiftname의 값이 되고 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