[Swift] 클로저 (Closures)

ds-k.mo·2022년 4월 29일
0

Swift

목록 보기
19/22

클로저

코드에서 전달 및 사용할 수 있는 독립 기능 블록이며, 일급 객체의 역할을 할 수 있음

일급 객체?

전달 인자로 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있으며, 함수의 반환값이 될 수도 있다.

코드 예시

import UIKit

/*
 { (parameters) -> return type in
     statements
 }
 */

let hello = { () -> () in
    print("hello")
}

hello()

let hello2 = { (name: String) -> String in
    return "Hello, \(name)"
}

//hello2(name: "Daeseong") // Error : 전달인자 레이블을 적으면 오류 발생

hello2("Daeseong") // "Hello, Daeseong"

func doSomething(closure: () -> ()) {
    closure()
}

doSomething(closure : { () -> () in
    print("hello")
}) // "hello"

func doSomething2() -> () -> () {
    return { () -> () in
        print("hello!")
    }
}

doSomething2()() // hello!


// Closure의 축약
func doSomething3(closure: (Int, Int, Int) -> Int) {
    closure(1,2,3)
}

doSomething3(closure: {(a,b,c) in
    return a+b+c
})

doSomething3(closure : {
    return $0+$1+$2
})

doSomething3(closure : {
    return $0+$1+$2
})

doSomething3(closure : {
    $0+$1+$2
})

doSomething3(){
    $0+$1+$2
}

doSomething3 {
    $0+$1+$2
}

0개의 댓글