- A=B: A에 B값을 할당
- A + B: A 더하기 B
- A - B: A 빼기 B
- A * B: A 곱하기 B
- A / B: A 나누기 B의 몫
- A % B: A 나누기 B의 나머지
- A == B: A와 B가 같은 값인지 비교
- A >= B: A가 B보다 크거나 같은 값인지 비교
- A <= B: A가 B보다 작거나 같은 값인지 비교
- A > B: A가 B보다 큰 값인지 비교
- A < B: A가 B보다 작은 값인지 비교
- A != B: A가 B가 다른 값인지 비교
- A === B: A와 B가 참조(레퍼런스)타입일 때 A와 B가 같은 인스턴스를 가리키는지 비교
- A !== B: A와 B가 참조(레퍼런스)탑입일 때 A와 B가 같지 않은 인스턴스를 가르키는지 비교
- A ~= B: A와 B의 패턴이 매치되는지 확인
ex) 참조 비교 연산자
let valueA: Int = 3
let valueB: Int = 5
let valueC: Int = 5
let isSampleValueAB: Bool = valueA == valueB // false
let isSampleValueBC: Bool = valueB == valueC // true
class SomeClass{}
let referenceA: SomeClass = SomeClass()
let referenceB: SomeClass = SomeClass()
let referenceC: SomeClass = referenceA
let isSampleReferenceAB: Bool = referenceA === referenceB // false
let isSampleReferenceAC: Bool = referenceA === referenceC // true
let isSampleReferenceBC: Bool = referenceB === referenceC // false
- Question ? A:B : Question 값이 참이면 A, 거짓이면 B를 반환
ex) 삼항 조건 연산자
var valueA: Int = 3
var valueB: Int = 5
var biggerValue: Int = valueA > valueB ? valueA : valueB // 5
valueA = 0
valueB = -3
biggerValue = valueA > valueB ? valueA : valueB // -3
var stringA: String = ""
var stringB: String = " String"
var resultValue: Double = stringA.isEmpty ? 1.0 : 0.0 //1.0
resultValue = stringB.isEmpty ? 1.0 : 0.0 // 0.0
- A...B : A부터 B까지의 수를 묶어 범위를 표현(A, B포함)
- A ..< B : A부터 B미만까지의 수를 묶어 범위를 표현(A 포함, b 미포함)
- A... : A이상의 수를 묶어 범위를 표현 (A포함)
- ...A : A이하의 수를 묶어 범위를 표현 (A포함)
- ..<A : A미만의 수를 묶어 범위를 표현 (A미포함)
- !B : B의 참, 거짓 값을 반전
- A && B : A와 B의 불리언 AND 연산
- A !! B : A와 B의 불리언 OR 연산
- ~A : A의 비트를 반전한 결과를 반환
- A & B : A와 B의 비트 AND 논리 연산
- A ! B : A와 B의 비트 OR 논리 연산
- A ^ B : A와 B의 비트 XOR 논리 연산
- A >> B, A << B : A의 비트를 B만큼 시프트
- A += B : A = A + B
- A -= B : A = A - B
- A = B : A = A B
- A /= B : A = A / B
- A %= B : A = A % B
- A <<= N : A = A << N
- A >>= N : A = A >> N
- A &= B : A = A & B
- A != B : A = A != B
- A ^= B : A = A ^ B
- &+ : 오버플로에 대비한 덧셈 연산
- &- : 오버플로에 대비한 뺄셈 연산
- &* : 오버플로에 대비한 곱셈 연산
ex) 오버플로 연산자
var unsignedInteger: UInt8 = 0
//let errorUnderflowResult: UInt8 = unsignedInteger - 1 //error
let underflowValue: UInt8 = unsignedInteger &- 1 // 255
unsignedInteger = UInt8.max
let errorOverflowResult: UInt8 = unsignedInteger // 255
let overflowValue: UInt8 = unsignedInteger &+ 2 // 1
- A ?? B : A가 nil이 아니면 A를 반환 nil이면 B 반환
- -A : A의 부호 변경
- O! : O(옵셔녈 개체)의 값을 강제로 추출
- V? : V(옵셔널 값)를 안전하게 추출하거나, V(데이터 타입)가 옵셔널임을 표현