[Swift] 기본 연산자들 (Basic Operators) - 1

팔랑이·2023년 6월 9일
post-thumbnail

23.04.28

드디어 공부하는 기본 연산자

기본 연산자들 (Basic Operators)

연산자는 값을 확인하거나, 바꾸거나, 합치기 위해 사용하는 특별한 기호이다. 기존에 C에서 사용하던 연산자들을 지원하나, 일반적인 에러들을 제거하기 위해 몇가지를 개선했다. a..< b 또는 a...b 와 같이 기존에 없던 범위를 표현하는 연산자들도 제공한다.

Terminology

연산자는 단항이거나, 이항이거나, 삼항이다.

  • 단항 연산자는 '-a' 와 같이 하나의 대상에 대해 연산한다. !b, c!와 같이 대상의 앞과(prefix) 뒤에(postfix) 나타난다.
  • 이항 연산자는 2 + 3 과 같이 두 대상 사이에(infix) 나타난다.
  • 삼항 연산자는 a ? b : c 와 같이 세 항에 대해 연산한다. Swift는 단 하나의 삼항 연산자를 제공한다.

할당 연산자 (Assignment Operator)

(a = b) 에서 할당 연산자 '=' 는 a의 값을 초기화하거나 b로 바꿔준다.

let b = 10
var a = 5
a = b
// a is now equal to 10

할당 연산자의 오른쪽에 오는 자료형이 값을 여러개 가지고 있는 튜플이면, 한번에 여러 상수와 변수로 분해될 수 있다.

let (x, y) = (1, 2)
// x = 1 , y = 2

C나 objective-C와 다르게, 할당연산자 '='는 값을 반환하지 않는다. 따라서 다음과 같은 코드는 유효하지 않다.

if x = y {
    // x=y가 어떤 값을 반환하지 않기 때문에 이 식은 유효하지 않다.
}

'=='의 사용을 의도했는데 '='로 쓰는 실수가 간혹 있다. Swift는 이런 실수를 막기 위해 if x = y 를 아예 유효하지 않은 식으로 처리한다.



산수 연산자 (Arithmetic Operators)

Swift는 모든 숫자 유형에 대해 4가지 산수 연산자를 제공한다.

  • 덧셈 (+)
  • 뺄셈 (-)
  • 곱셈 (*)
  • 나눗셈 (/)
1 + 2       //equals 3
5 - 3       //equals 2
2 * 3       //equals 6
10.0 / 2.5  //equals 4.0

덧셈 연산자는 String 자료형에도 사용할 수 있다.

"hello, " + "world" //equals "hello, world"



나머지 연산자 (Remainder Operator)

다른 언어에서는 modulo 연산자라고도 하는 Remainer 연산자 (a % b)는 a를 b로 나눈 값의 나머지를 나타낸다.

9 % 4       //equals 1
-9 % 4      //equals -1



단항 뺄셈 연산자 (Unary Minus Operator)

접두사로 '-'를 사용해 값의 부호를 전환할 수 있다. 띄어쓰기를 사용하지 않고 값 앞에 바로 붙여야 한다.

let three = 3
let minusThree = -three     // minusThree equals -3
let plusThree = -minusThree // plusThree equals 3, or "minus minus three"



단항 덧셈 연산자 (Unary Plus Operator)

'+'는 값에 아무런 변화를 주지 않고 값 그대로를 돌려준다.

let minusSix = -6
let alsoMinusSix = +minusSix    // alsoMinusSix equals -6



복합 할당 연산자 (Compound Assignment Operators)

C와 같이 Swift에서도 할당연산자 (=)를 다른 연산자와 복합해서 사용할 수 있다. 한가지 예는 추가 할당 연산자 (+=).

var a = 1
a += 2
// a is now equal 3



비교 연산자 (Comparison Operators)

  • 같다 (a == b)
  • 같지 않다 (a != b)
  • 보다 크다 (a > b)
  • 보다 작다 (a < b)
  • 크거나 같다 (a >= b)
  • 작거나 같다 (a <= b)

비교연산자는 주로 if문과 같은 조건문에서 사용된다.

let name = "world"
if name == "world" {
    print("hello, world")
} else {
    print("I'm sorry \(name), but I don't recognize you.")
}
// Prints "hello, world", because name is indeed equal to "world".

같은 숫자와 자료형의 값을 가진 두 가지의 튜플을 비교할 수도 있다. 비교 결과가 다른 값을 찾을 때까지 왼쪽에서 오른쪽으로, 한 번에 하나씩 비교된다. 튜플의 모든 요소들을 비교한 결과가 같아야 두 개의 튜플이 같다고 간주된다.

(1, "zebra") < (2, "apple")   // 1은 2보다 작고, zebra와 apple은 비교할 필요가 없으므로 true이다.
(3, "apple") < (3, "bird")    // 3은 3과 같고, apple이 bird보다 작으므로 true이다.
(4, "dog") == (4, "dog")      // 4는 4와 같고, dog는 dog과 같으니 true 이다.

첫 번째 비교식에서, 1은 2보다 작으므로 왼쪽 튜플이 오른쪽보다 작다. 이미 1과 2에서 비교가 된 이후이므로 zebra와 apple 중 누가 큰지는 상관이 없다.

두 번째와 세 번째 비교식에서, 첫 번째 비교값이 각각 같으므로 두 번째 비교값들이 비교된다.

String과 Int같이 비교가 가능한 것들은 tuple 안에서 비교가 가능하지만, Bool과 같이 비교가 되지 않는 자료형은 tuple 안에서 비교될 수 없다.

("blue", -1) < ("purple", 1)    // true
("blue", false) < ("purple", true) // Error

Swift 라이브러리에서 제공하는 비교연산자로는 7개 미만의 값을 가진 tuple끼리 비교 가능하다. 그 이상의 개수의 값을 비교하려면 스스로 비교연산자를 만들어서 써야 함.


🌏 참고사이트
Swift Language Guide

profile
정체되지 않는 성장

0개의 댓글