Swift의 폐쇄(Closure)에 대해

2017-02-05
9 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

Xcode 기능 확장(Extension) 제거하기
Xcode
shares3 views
Xcode
shares3 views

Xcode 기능 확장(Extension) 제거하기

MJ Kim - 3월 18, 2017

Mac에서 Xcode Source Editor Extension등의 기능확장을 사용하다보면 디버깅시 시스템 환경 설정의 확장이 앱에 등록되는 경우가 있다. 계속해서 목록이 남아 있기…

iOS App Store Review(앱 심사약관) 번역
Swift 3.0
shares112 views
Swift 3.0
shares112 views

iOS App Store Review(앱 심사약관) 번역

MJ Kim - 3월 15, 2017

App Store Review를 번역했다. 사실 이번에 좀 애매한 리젝을 당해서 그걸 이해하고자 정리해본다. 원문링크: https://developer.apple.com/app-store/review/guidelines/ 1. 이약관은? 1.1 앱 개발자로서 프로그램의…

Raspberry Pi 타이머 On/Off 전원제어모듈 RPi1114-Raspberry Pi
IoT by Raspberry Pi
shares9 views
IoT by Raspberry Pi
shares9 views

Raspberry Pi 타이머 On/Off 전원제어모듈 RPi1114-Raspberry Pi

MJ Kim - 3월 04, 2017

RPi1114-Raspberry Pi전원제어 모듈이 있다. 이 제품은 40Pin GPIO핀헤더에 연결하여 사용하는 모듈로 Cortax-M0마이크로컨트롤러 LPC1114를 내장하고 Raspberry Pi의 시작과 정지 순서등을 프로그래밍할…