연산자

  • 연산자는 검사하고 변경하거나 값을 결합시키는데 사용하는 특별한 기호나 구문을 말한다. + 연산자는 두 숫자를 더하는 역할을 수행한다. 좀더 복잡한 예로는 논리연산자 AND 연산자 &&와 증가 연산자 ++i가 있다.
  • Swift는 대부분 C의 일반적인 연산자는 지원하고 코딩 에러를 줄이기 위해 여러 가지를 개선하였다. 할당 연산자인 =은 반환값이 없어 == 연산자를 의도한 경우 실수로 사용되는 경우를 방지한다. 산술 연산자(+, -, *, % 등)는 값의 오버플로우를 감지 및 허용하지 않는다. 허용한 범위를 벗어나는 경우 기대하지 못한 결과를 얻는 것을 방지하는 역할을 한다.
  • C와 달리 Swift는 부동소수점에 대해 나머지(%)연산을 수행할 수 있다. 2개 범위 연산자(a..<b와 a..b)를 지원한다.
  • 커스텀 연산자를 정의할 수 있고 커스텀 타입에 대해서 표준 연산을 수행할 수 있다.

용어

  • 단항(unary)
    • 연산을 수행하는 대상이 하나인 경우를 말한다.
    • 단항 prefix : -a, !b
    • 단항 postfix : i++
  • 이항(binary)
    • 연산을 수행하는 대상이 두개인 경우를 말한다.
    • 이들 대상 사이에 연산자가 들어간다. 2 + 3
  • 삼항(ternary)
    • 연산을 수행하는 대상이 세개인 경우를 말한다.
    • a ? b : c (유일한 삼항 연산자)
  • 연산자가 영향을 미치는 값을 피연산자(operand)라고 한다. 1 + 2 표현에서 + 기호는 이항 연산자이고 1와 2가 피연산자가 된다.

할당 연산자

  • 할당 연산자(a=b)는 a의 값을 b값으로 초기화 혹은 갱신하는 역할을 한다.
let b = 10
var a = 15
a = b
// 이제 a는 10이 된다.
  • 만약 할당되는 오른쪽이 튜플이라면 튜플의 엘리먼트들은 상수나 변수로 분해할 수 있다.
let (x, y) = (1, 2)
  • 할당 연산자는 자체로 반환값을 가지지 않는다. 다음 예제는 유효하지 않다.
if x = y {
   // x = y는 반환하는 값이 없으므로 유효하지 않다.
}

*