할당 연산자 =
는 값을 초기화시키거나 변경
상수, 변수에 모두 사용 가능
Objective-C 또는 C와 다르게 값을 반환하지 않는다.
if x = y { ... } // Error
4가지 표준 사칙 연산자인 +
, -
, *
, /
을 제공
Objective-C 또는 C와 다르게 오버플로우되는 것을 허용하지 않는다.
addingReportingOverflow()
등을 통해 오버플로우를 허용할 수 있다.
표준 C에서 제공하는 비교 연산자를 모두 지원
객체 비교를 위해 식별 연산자 ===
과 !==
를 제공
===
는 같은 인스턴스를 참조하고 있는지 비교하는 역할let book1 = Book(title: "Hello")
let book2 = Book(title: "Hello")
let book3 = book1
book1 === book2 // false
book1 === book3 // true
==
는 stack, ===
는 heap 영역에서 값 비교a ?? b
형태로, 옵셔널인 a
가 nil
이 아니면 a
를, 그렇지 않으면 b
를 반환
let defaultValue = "Default"
let optionalValue: String? // nil
let value = optionalValue ?? defaultValue
// value : "Default"
닫힌 범위 연산자로, 1...5
이면 1, 2, 3, 4, 5
에 해당
let range: ClosedRange<Int> = 1...5
for r in range { } // r = 1, 2, 3, 4, 5
// or
for r in 1...5 { } // r = 1, 2, 3, 4, 5
반 닫힌 범위 연산자로, 1..<5
이면 1, 2, 3, 4
에 해당
let range: Range<Int> = 1..<5
for r in range { } // r = 1, 2, 3, 4
// or
for r in 1..<5 { } // r = 1, 2, 3, 4
단방향 범위 연산자로,
...5
이면 ..., -2, -1, 0, 1, 2, 3, 4, 5
에 해당
..<5
이면 ..., -2, -1, 0, 1, 2, 3, 4
에 해당
배열의 인덱스로도 사용 가능
let someInts = [0, 1, 2, 3, 4, 5]
for someInt in someInts[...3] { } // someInt = 0, 1, 2, 3
// or
for someInt in someInts[..<4] { } // somtInt = 0, 1, 2, 3