Swifter {Swift Developer}

메뉴

Swift의 폐쇄(Closure)에 대해

앱 개발에서 폐쇄(Closure)에 제대로 이해하지 못한 것 같아, 나름대로 정리해 보았다.

폐쇄(클로저, Closure)란?

  • 폐쇄는 간단하게 말하면, 자신을 둘러싼 범위의 변수를 사용할 수 있다
  • 변수에 함수를 할당할 수 있다

위 내용은 구글링을 하다보면 나오는 내용인데 솔직히 이해하기 어렵다고 생각된다.

폐쇄 형은 위와 같은데 에로 String형 인수를 어떤 처리를 한 후 String형으로 리턴하면 다음과 같이 구현한다.

예제

setInfo() -> Void 라는 형의 함수를 리턴하는 함수이다. func hey형은 ()-> Void 인사말을 하는 함수로 -> Void는 생략이 가능하다. 이 예제에서 알 수 있는 것은 setInfo의 name파라미터를 안에 있는 hey함수가 자신의 병수로 사용할 수 있다

setInfo에서 선언된 count라는 변수를 안에 있는 hey함수가 값을 자신의 것으로 조작할 수 있다.

그렇다면 장점음?

폐쇄(Closure)는 솔직히 필요한지 의문스럽다. 이런 상황에서 사용하기 편리하다고 말하는 에로 sort()함수와 폐쇄의 조합이 많이 사용한다.

폐쇄형을 생략할 수 있다

Swift언어는 폐쇄형추론을 사용하여 생략할 수 있다.

위 코드를 아래와 같이 폐쇄형추론으로 생략이 가능하다.

return을 생략할 수 있다

인수형도 생략할 수 있다

만약 서버와 통신을 통해 데이터를 받고 처리하는 경우 데이터가 없는 경우가 있는데 이는 서버통신은 다른 스레드로 처리할 때 값이 리턴되기 전까지 메인스레드에서 값을 리턴하여 빈값이 리턴되는 경우가 있다. 즉, 다른 스레드의 처리가 끝나고 나서값을 리턴하는 동작이 없다는 것인데 폐쇄를사용하여 값을 얻을 수 있다.

 

Facebook Comments

카테고리:   Swift 3.0

댓글

죄송하지만 댓글은 닫혀 있습니다.