티스토리 뷰

Swift

[iOS] Swift Closure 정리

dev-Jun 2021. 2. 25. 16:31

 

Closure 개념은 Swift 문법을 배우면서 가장 어려웠던 개념 중 하나였습니다. (저만 그럴 수도...)

언뜻 보면 함수와 다를 게 없어 보이는 Closure.... 무엇인지 함께 봅시다!


Closure

- 이름이 없는 함수 (코드 블록)

- 함수와 같이 변수/상수로 할당, 매개변수로 전달, 값을 반환할 수 있습니다.


Closure 문법

{ (매개변수들) -> 반환 타입 in
      실행 코드
}

 


Closure 사용

//Fuction

func fun(a: Int, b: Int) -> Int {

    return a + b
    
}


//Closure

let clo: (Int, Int) -> Int = { (a: Int, b: Int) in

    return a + b
    
}


//Closure 사용

let result:Int = clo(2,4)

print(result) // 6

- 함수와 다르게 func 키워드를 사용하지 않습니다.


함수의 파라미터로 Closure 사용

let plus: (Int, Int) -> Int = { (a: Int, b: Int) in

    return a + b
    
}


func result(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {

    return method(a, b)
    
}


print( result(a: 4, b: 5, method: plus) ) // 9

Closure의 생략 (다양한 표현)

// 주어진 Closure를 파라미터로 받는 함수

func fun(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {

    return method(a, b)
    
}


// 기본 표현
result = fun(a: 5, b: 8, method : {

    a, b in return a + b // 13
    
})


// 마지막 파라미터를 분리한 Closure
result = fun(a: 5, b: 8) {

    a, b in return a + b // 13
    
}


// 단축 인자를 이용한 Closure
result = fun(a: 5, b: 8, method: {

    return $0 + $1 // 13
    
})


// return 표현을 생략한 Closure
result = fun(a: 5, b: 8) {$0 + $1} // 13

- 다음은 전부 같은 값을 반환하는 표현입니다. (의미가 같습니다.)

1. 함수 호출 시 마지막 파라미터에 클로저 파라미터가 있다면 밖으로 분리하여서 중괄호를 통해 생략할 수 있습니다.

2. 단축 인자를 이용하여 생략하는 방법도 있습니다. ($0, $1 => 클로저의 첫 번째 인자, 두 번째 인자를 뜻합니다)

3. 클로저가 반환하는 값이 존재한다면 return 없이도 마지막 줄의 값이 반환됩니다. (return 생략)

 

※ 협업 시 너무 축약된 코드는 알아보기 힘들 수 있습니다.

 

 

Reference :

네이버 부스트 코스 > iOS 앱 프로그래밍

패스트캠퍼스 iOS 앱 개발 올인원 패키지

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함