day_by_day

5. 연산자 본문

QA Automation/swift5

5. 연산자

kokorii_ 2023. 6. 20. 22:55
  • 스위프트의 연산자는 특정한 문자로 표현한 함수

5.1 연산자의 종류

5.1.1 할당 연산자

  • a = b

5.1.2 산술 연산자

  • a + b
  • a -b
  • a * b
  • a / b
  • a % b

5.1.3 비교 연산자

  • a == b
  • a ≥ b
  • a ≤ b
  • a > b
  • a < b
  • a != b
  • A === B : 참조가 같다
    • A와 B가 레퍼런스 타입일 때 같은 인스턴스를 가리키는지 비교하여 불리언 값을 반환
  • A !== B : 참조가 같지 않다
  • A ~= B : A와 B의 패턴이 매치되는지 확인하여 불리언 값을 반환

5.1.4 삼항 조건 연산자

  • Question ? a : b

5.1.5 범위 연산자

  • 값의 범위를 나타낼 때

폐쇄 범위 연산자 a…b a,b 를 포함한 범위

반폐쇄 범위 연산자 a..<b a포함 b 미포함한 범위
단방향 범위 연산자 a… a 이상
  …a a 이하
  ..<a a 미만의 수

5.1.6 부울 연산자

  • !b
  • a && b
  • a || b

5.1.7 비트 연산자

  • ~a : a의 비트를 반전한 결과
  • a & b
  • a | b
  • a ^ b
  • a >> b(오른쪽) , a <<b (왼쪽) : a의 비트를 b 만큼 시프트
    • ex) 4 << 1 : 8
    • ex) 4 >> 1 : 2

5.1.8 복합 할당 연산자

  • a+=b
  • a-=b
  • a*=b
  • a/=b
  • a%=b
  • a <<= n
  • a >>= n
  • a &= b
  • a != b
  • a ^= b : a와 b의 비트 xor

5.1.9 오버플로연산자

  • a &+ b
  • a &- b
  • a &* b
var unsignedInteger: UInt8 = 0
let errorResult: UInt8 = unsignedInteger -1 //error
let overflowResult: UInt8 = unsignedInteger &- 1 // 255

5.1.10 기타 연산자

  • a ?? b : a가 nil이 아니면 a, nil이면 b
  • -a : 부호변경
  • a! : 옵셔널 강제 추출
  • a? : a값을 안전하게 추출하거나 옵셔널임을 표시함

5.2 연산자 우선순위와 결합방향

  • 스위프트에서는 연산자 우선순위를 지정해 놓았기 때문에 코딩하다가 헷갈리는 경우 확인하면 된다
  • 연산자가 연산하는 결합방향도 지정되어 있다
  • 기본연산자들의 우선도와 결합방향을 알아보려면 스위프트 표준 라이브러리의 연산자 정의를 참고하면 된다

5.3 사용자 정의 연산자

  • 연산자의 역할을 부여할 수 있다
  • 전위 연산자 : prefix, !A
  • 중위 연산자 : infix, a+b
  • 후위 연산자 : postfix, A!
  • operator : 연산자 키워드
  • associativity 결합방향, precedence 우선순위

5.3.1 전위 연산자

prefix operator **

prefix func ** (value: Int) -> Int { return value * value }

let minusFive: Int = -5
let sqrtMinusFive: Int = **minusFive //25 

5.3.2 후위 연산자

prefix operator **

prefix func ** (value: Int) -> Int { return value + 10 }

let five: Int = 5
let fivePlusTen: Int = five** //15 
  • 하나의 피연산자에 전위 연산과 후위 연산을 한 줄에 사용하게 되면 후위 연산을 먼저 수행한다.
prefix operator **
postfix operator **

prefix func ** (value: Int) -> Int { return value * value }

postfix func ** (value: Int) -> Int { return value + 10 }

let five: Int = 5
let test: Int = **five** 

// (10 + 5) * (10 + 5) = 225

5.3.3 중위 연산자

-> 여기는 더 스터디 필요 .. 아무리봐도 머르겠넹 ... 

'QA Automation > swift5' 카테고리의 다른 글

8. 옵셔널(Optional)  (0) 2023.06.20
7. 함수  (0) 2023.06.20
6. 흐름제어  (0) 2023.06.20
4. 데이터 타입 고급  (0) 2023.06.20
3. 데이터 타입 기본  (0) 2023.06.20