반응형

 Swift 에는 클로저 (Closures) 라는 개념이 존재한다.

얼핏 봐서는 코드를 간결하게 짤 수 있게 해주는 기능을 하는 것 같고,

실제로 적용해서 많이 사용해봐야 익숙해 질 것 같은 기능이다. 

클로저는 필수적이라기 보다는 Swift 를 더 잘 사용하기 위한 기능에 가까운 것 같아서

처음 배울 때는 한 번에 완벽하게 이해하고 지나가기 보다 개념 정도와 기본적인 사용법 정도만 알고 지나가면 될 것 같다.




클로저 (Closures) 란 ?


 클로저 란 간단하게 설명하자면 코드 블럭이다. 

함수를 코드들의 모임이라고 설명했었는데, 클로저는 함수 보다 더 포괄적인 개념으로 생각하면된다.

(함수도 클로저의 일종이다.)

다만 Swift 에서는 클로저의 개념이 주로 이름이 없는 함수 (익명 함수)로 많이 활용되는 것 같다.

클로저를 통해 일회성으로 사용 되는 함수를 간결한 형태로 표현하려고 하기 때문이다.

Swift 공식 문서에 따르면 클로저는 세 가지 형태가 있다고 한다.

  1.  이름이 있고, 어떤 값도 획득하지 않는 전역함수 
  2.  이름이 있고, 값을 가지고 있는 함수로 부터 값을 획득할 수 있는 중첩된 함수
  3.  이름이 없고, 주변 문맥에 따라 값을 획득할 수 있는 축약된 문법의 표현 

이렇게 세 가지가 있다고 하는데 말로만 들어서는 이해가 바로 되진 않는다.




클로저 표현법


 클로저의 표현법은 다음과 같다.


{ (파라미터) -> 리턴타입 in 

//코드 작성 

}


 대충봐도 함수와 뭔가 비슷한 느낌이 든다.




클로저의 기본적인 사용법


Swift 공식 문서의 예제를 통해 간단하게 클로저의 기본적인 사용법만 따라해 보았다.

예제는 sorted(by: ) 메서드를 통해 이름 값을 가지고 있는 배열을 알파벳 역순으로 정렬하는 예제이다.

( sorted() 메서드에 대한 정보는 https://developer.apple.com/documentation/swift/array/1688499-sort 참고)




그림을 보면 sorted(by: ) 함수를 클로저 문법을 사용하면 간단하게 표현이 가능하다.

sorted(by: ) 함수 처럼 공통으로 사용되는 함수가 아니라면 지나치게 축약된 표현은 오히려 코드의 가독성을 떨어뜨릴 것 같다.



이외에도 클로저에 대해 값 획득이나 클로저의 참조 타입, Escaping Closures, Autoclosures 에 대한 개념들을

추가로 공부해야한다. 

처음 공부할 때에는 Swift 의 코드를 간결하고 깔끔하게 만드는 것 보다 익숙해지고 많이 사용하는게 더 

중요하기 때문에 추후에 코드들을 많이 접하고 나서 나머지 개념들도 다루도록 해야겠다.












* 해당 포스팅은 스위프트(Swift)4  버전을 기준으로 하고 있습니다.

* 참고 : https://swift.org/ 



 



반응형

'IT 정보 로그캣 > Swift' 카테고리의 다른 글

[Swift 공부] 함수  (0) 2018.12.15
[Swift 공부] 반복문  (0) 2018.11.11
[Swift 공부] 조건문  (0) 2018.11.10
[Swift 공부] 기본 연산자  (0) 2018.11.04
[Swift 공부] 컬렉션 타입이란 ?  (0) 2018.11.03

+ Recent posts