Swift의 폐쇄(Closure)에 대해

2017-02-05
20 Views

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

폐쇄(클로저, Closure)란?

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

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

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

예제

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

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

그렇다면 장점음?

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

폐쇄형을 생략할 수 있다

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

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

return을 생략할 수 있다

인수형도 생략할 수 있다

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

 

Facebook Comments

You may be interested

페이지 로딩 위치에 따른 사용자 시선 유도
Swift 3.0
shares3 views
Swift 3.0
shares3 views

페이지 로딩 위치에 따른 사용자 시선 유도

MJ Kim - 4월 29, 2017

로딩되는 표시를 표시할 위치를 조금 고민해보면서 사용자경험(UX)를 개선하기 위함을 고려해서 정리해 본다. 로딩을 생각해보면 대부분 한가운데에 표시하면 된다고 생각하지만, Twitter…

iOS와 Android UX의 차이점
Swift 3.0
shares2 views
Swift 3.0
shares2 views

iOS와 Android UX의 차이점

MJ Kim - 4월 29, 2017

최근 필자가 iOS와 Android를 같이 개발하다보니 UX의 차이점을 기억하고자 정리해본다.  이를 정리하는 이유는 운영체제별로 차이점을 이해하고 그 차이점을 극복하기 위함이다.…

모바일 앱 아키텍처
Swift
shares26 views
Swift
shares26 views

모바일 앱 아키텍처

MJ Kim - 4월 22, 2017

이 내용은 나름대로 개발해본 내용을 토대로 정리해본 모바일 앱 아키텍처에 대한 내용이다. 이를 정리한 이유는 오래된 아키텍처부터 최근 아키텍처까지 정리해보고…