대입 연산자 (Assignment Operator)
= 연산자를 통해 초기화할 수 있습니다.
let b = 10
var a = 5
a = b
// a is now equal to 10
우항이 여러개의 값이 있는 튜플이라면 튜플의 요소는 여러개의 상수 또는 변수로 한번에 분해될 수 있습니다.
let (x, y) = (1, 2)
// x is equal to 1, and y is equal to 2
C와 Objective-C에서의 대입 연산자와 다르게 Swift의 대입 연산자는 값을 반환하지 않습니다. 즉, 아래의 예시는 유효하지 않습니다.
if x = y {
// This is not valid, because x = y does not return a value.
}
복합 대입 연산자 (Compound Assignment Operators)
C처럼 Swift는 대입(=)과 다른 연산자를 결합한 복합 대입 연산자(compound assignment operators)를 제공합니다. 아래 예시는 덧셈 대입 연산자(+=) 입니다.
var a = 1
a += 2
// a is now equal to 3
Nil-결합 연산자 (Nil-Coalescing Operator)
nil-결합 연산자 (nil-coalescing operator)(a ?? b)는 옵셔널 a에 값이 있으면 a로 값을 반환하고, a가 nil이면 b를 반환합니다.
또한, nil-결합 연산자는 아래 코드로 짧게 표현할 수 있습니다.
a != nil ? a! : b
위 코드는 삼항 조건 연산자를 사용하고 a가 nil이 아닐 경우 a에 래핑된 값을 접근하기 위해 강제 언래핑(a!)하며 a가 nil일 경우 b를 반환합니다.
let defaultColorName = "red"
var userDefinedColorName: String? // defaults to nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName is nil, so colorNameToUse is set to the default of "red"
위 예제는 기본 컬러 이름과 옵셔널 사용자가 정의한 컬러 이름 중 선택하기 위해 nil-결합 연산자를 사용합니다.
범위 연산자 (Range Operators)
Swift는 값의 범위를 짧게 표현하기 위해 몇개의 범위 연산자(range operators)를 제공합니다.
닫힌 범위 연산자(Closed Range Operator)
닫힌 범위 연산자(closed range operator)(a..b)는 값 a와 b가 포함된 a부터 b까지의 범위 실행을 정의합니다. a의 값은 b보다 클 수 없습니다.
닫힌 범위 연산자는 for-in 루프와 같이 모든 값을 사용할 범위를 반복할 때 유용합니다.
for index in 1...5 {
print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
반-열림 범위 연산자 (Half-Open Range Operator)
반-열림 범위 연산자(half-open range operator)(a..<b)는 b가 포함되지 않은 a부터 b까지의 범위 실행을 정의합니다. 이 연산자는 마지막 값은 포함되지 않지만 처음 값은 포함되므로 반-열림 (half-open)이라고 합니다. 닫힌 범위 연산자와 같이 a의 값은 b보다 클 수 없습니다.
반-열림 범위는 리스트의 길이까지 순차적으로 작업하는 것이 유용한 배열과 같은 0부터 시작하는 리스트와 함께 사용할 때 유용합니다.
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
배열은 4개의 아이템을 가지고 있지만 0..<count 는 반-열림 범위이기 때문에 오직 3(배열의 마지막 아이템의 인덱스)까지 카운트 합니다.
단-방향 범위 (One-Sided Ranges)
닫힌 범위 연산자는 한방향으로 끝까지의 범위에 대한 형식입니다. 아래 예시는 인덱스 2에서 배열 끝까지 배열의 모든 요소를 포함하는 범위가 그 예시입니다. 이러한 경우 단-방향 범위를 통해 범위 연산자의 한쪽을 생략할 수 있습니다. 이러한 범위의 종류는 연산자가 오직 한쪽의 값만 가지고 있으므로 단-방향 범위 (one-sided range)라고 합니다.
for name in names[2...] {
print(name)
}
// Brian
// Jack
for name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian
단-방향 범위는 위와 같은 상황 말고도 다른 컨텍스트에서도 사용될 수 있습니다. 반복이 어디에서 시작해야 하는지 명확하지 않기 때문에 반복문에서 단-방향 범위의 첫번째 값을 생략할 수 없습니다. 반복문에서 단-방향 범위의 마지막 값은 생략할 수 있습니다. 그러나 범위가 무한정 계속되므로 루프에 대해 명시적으로 종료 조건을 추가해야 합니다. 아래 코드와 같이 단-방향 범위에 특정 값이 포함되어 있는지 체크할 수 있습니다.
let range = ...5
range.contains(7) // false
range.contains(4) // true
range.contains(-1) // true
References
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/aboutswift
Documentation
docs.swift.org