Swift 2.2
3월 21일에 Swift 2.2가 정식 버전이 되었다. Swift 블로그에 어떤 내용이 변경되었는지 나왔는데, 하나씩 살펴보았다.
SE-0001: Allow (most) keywords as argument labels
함수 인자의 외부 이름 라벨(argument label)에 in
같은 키워드를 사용하기 위해서는 `in`
형태로 사용해야 했다.
|
|
이번 버전부터는 inout
, var
, let
을 제외한 키워드 대부분을 사용할 수 있게 되었다.
|
|
SE-0015: Tuple comparison operators
튜플에 대한 <
, >
같은 비교 연산이 추가되었다.
|
|
SE-0014: Constraining AnySequence.init
이건 아직 자세히 모르겠다. 일단 넘어간다. ㅋㅋㅋ
SE-0011: Replace typealias keyword with associatedtype for associated type declarations
typealias
키워드가 다음 2가지 형태로 사용되어왔다.
- Type Aliases - 이미 존재하는 type에 대한 별칭
- Associated Type -
protocol
의 한 부분으로 앞으로 지정할 type에 대한 별칭
typealias
는 Type Alias로만 사용되게 수정되고, associatedtype
이라는 새로운 키워드를 추가해 Associated Type으로 사용하게 되었다.
기존에는 이렇게 사용되었다.
|
|
Swift 2.2에서는 다음과 같이 사용된다.
|
|
SE-0021: Naming Functions with Argument Labels
함수를 구분할 때, 인자 이름까지 포함해서 구분할 수 있게 되었다.
The Swift Programming Language for Swift 2.2에서 예제 코드를 가지고 왔다.
|
|
SE-0022: Referencing the Objective-C selector of a method
#selector
표현이 추가되었다.
Objective-C 런타임에서 참조 가능한 method를 가리킬 때, 사용한다고 한다.
|
|
Objective-C와 Swift를 같이 사용하지 않아서 유용성은 잘 모르겠다.
SE-0020: Swift Language Version Build Configuration
Swift 언어마다 차이가 커지니, 언어 버전에 따라 분기 처리하는 방법이 추가되었다.
|
|
블로그에 안 나와 있는 변경 사항
The Swift Programming Language for Swift 2.2 문서의 Document History를 보면 더 많은 내용이 있다. 그중에 눈에 띄는 것들을 뽑았다.
++
, --
, C style for loop들이 deprecated 되었다.
컴파일 에러는 아니고, 경고 정도로 처리된다. Swift 3.0 준비 작업 중에 하나라고 한다.