본문 바로가기

iOS/Swift

Swift 공식 문서 2. Basic Operator

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/basicoperators

 

Documentation

 

docs.swift.org

 

 

Swift 공식 문서 보면서 내 맘대로 정리


Arithmetic Operators

  • Swift의 산술 연산자는 오버플로우를 허용하지 않음. → 런타임 에러 발생
  • 오버플로우 연산자를 활용하면 오버플로가 발생했을 때 실행을 제어할 수 있다.

Overflow Operators

  • Swift에서 정수 상수나 변수를 특정 타입이 담을 수 없는 값으로 설정하면 오류 발생
var potentialOverflow = Int16.max
potentialOverflow += 1

 

  • 오버플로우가 발생하더라도 사용 가능한 비트 수를 자르는 동작이 필요한 경우
    • &+, &-, &*
    • 오버플로우가 발생하더라도 계산을 계속하여 결과 값이 비트 순환에 의해 잘린 값이 된다.
  • 저수준 비트 연산이나 특정 알고리즘에서 값의 순환을 활용하고자 할 때 오버플로우 연산자가 필요할 수 있음
// Int16은 -32,768 ~ 32,768 사이의 정수
var potentialOverflow = Int16.max // 32,767
potentialOverflow = potentialOverflow &+ 1 // -32,768

Range Operators

  • 나머지 연산
-9 % 4 // equals -1
// -9 = (4 * -2) + -1

Comparison Operators

  • Swift 연산자에는 ===, !==가 존재하고 이는 두 객체 참조가 모두 동일한 인스턴스를 참조하는지 알려준다.
  • 튜플의 원소들이 모두 비교 연산자를 수행할 수 있는 값들로 이루어져 있다면 튜플에 비교 연산자를 적용할 수 있다.

Range Operators

  • Closed, Half-Open, One-Sided 형태로 범위를 설정할 수 있다.
  • closed : 1...5
  • half-open : 1..<5
  • one-sided : 1...
    • 단방향 범위 연산자는 subscript 뿐만 아니라 특정 값을 포함하는지 여부를 확인할 때도 사용 가능하다. 
let range = ...5 
range.contains(7) // false 
range.contains(4) // true 
range.contains(1) // true
  • 1<.. 와 같이 half-open과 one-sided 혼합 가능