Blog

Swift Study #3 후기

July 21, 2014

Swift Study #3 후기

Closures

  • 클로저는 자신이 정의된 컨텍스트(context)로부터 임의의 상수 및 변수의 참조(reference)를 획득(capture)하고 저장할 수 있다.
  • Swift의 클로저 표현식은 아래의 항목들에 의해 최적화될 수 있다.
    • 컨텍스트로부터 인자 및 반환 값을 유추
    • 단일 표현식 클로저로부터 명확한 반환값
    • 단축 인자 이름
    • 후행 클로저 문법
  • Swift는 어떤 변수가 참조로 획득되고 어떤 변수가 복사값으로 획득될지 판단한다. 또한 모든 메모리 관리 과정을 담당한다.
  • 클로저는 참조 타입이다.

Enumerations

  • 열거형은 관련있는 값들의 그룹에 대한 일반적인 타입을 정의하며, 이를 이용하여 코드 안에서 타입에 안전한(type-safe) 방법으로 작업할 수 있다.
  • 또한 열거형은 초기 멤버 값을 제공하는 이니셜라이저를 제공할 수 있고, 원래 구현을 넘어서 기능을 확장할 수도 있으며, 표준 기능을 제공하기 위한 프로토콜을 따를 수 있다.
  • 어떤 특정한 타입의 관련 값을 저장하는 Swift 열거형을 정의할 수 있으며, 필요한 경우에 열거형의 각 멤버에 따라 값의 형식이 다를 수 있다.
  • 열거형 멤버들은 (원시 값들이라고 부르는) 모두 같은 타입인 기본값들로 미리 채워질 수 있다.

&

사실 Closures를 어렵게만 생각해서 이번주는 Closures, Enumerations 두 장만 나갔다. Closures는 동우님이 잘 설명을 해주셔서 훨씬 이해하기 쉬웠고, 확실하게 개념을 잡기 위해서 다음날 바로 클로저에 대한 내용을 더 찾아보며 다른 언어와 비교도 해보고, 다른 사람들은 어떻게 정의하는지 알아봤다.

A Closure is a way to access and manipulate external variables from within a function.

존 레식은 클로저에 대해 위와 같이 설명했는데 깔끔한 한 줄 설명이 아닌가 생각된다. 클로저에 대해서 공부를 하면서 일급객체에 대한 내용도 추가적으로 알 수 있었다.

열거형에 대해서 공부하면서는 Optional도 열거형이라는 사실을 알게 되었다. Optional은 None, Some(T)로 이루어진 열거형이며 nil을 대입하면 None 타입을 갖는 열거형이다. 또한 The Swift Programming Language에는 나오지 않지만 열거형의 이니셜라이저나 프로토콜에 대해서도 열거형의 정의를 보며 조금이나 알 수 있었다.