티스토리 뷰

반응형
SMALL

이번 포스트에서는 Swift의 기본 연산자에 대해 살펴보도록 하겠습니다.

할당 연산자

할당 연산자는 값을 초기화하거나 이미 설정된 값을 새로운 값으로 변경하는 역할을 가지고 있습니다.

아래와 같이 상수, 변수 모두 사용할 수 있습니다. 또한 튜플 형식을 사용하여 여러 개의 값을 한 번에 할당할 수도 있습니다.

let num1 = 10
var num2 = 5
num2 = num1

// 결과 : num2 = 10, num1 = 10

let (numX, numY) = (10, 20)
// numX는 10, numY는 20이 할당됩니다.

C 혹은 Objective-C와는 달리 Swift에서 할당 연산자는 값을 반환하지 않는 특징을 하지고 있습니다.

즉, C 혹은 Objective-C에서 성공적으로 값이 할당된 경우 TRUE가 반환되어 if문 앞에 할당 연산자를 사용할 수 있었다면 Swift에서는 이러한 구문을 사용할 수 없습니다.

if num1 = num2 {

}

// 위와 같은 코드는 컴파일 에러가 납니다.(반환되는 값이 없으므로)

단항 Minus / Plus 연산자

Swift에서는 단항 Minus, 단항 Plus 연산자를 제공합니다. 

수학적으로 -(-3) => 3이 되는 것과 같은 연산을 수행할 수 있습니다. 다음과 같이 말이죠.

let minusOne = -1
let mMinusOne = -minusOne // mMinusOne => 1, minusOne => -1

let plusOne = 1
let pPlusOne = +plusOne // pPlusOne => 1, plusOne => 1

복합대입연산자 (Compound Assignment Operators)

복합대입 연산자는 할당 연산(=)과 사칙 연산(+,-,*,/,%)이 결합된 연산자로 표현식을 줄일 수 있습니다.

let num1 = 3
var num2 = 5

num2 += num1  // num2 => 8, num1 => 3

비교 연산자(Comparison Operators)

비교 연산자는 좌항과 우항을 비교해주는 연산자로

 

  • 같다 (a == b)

  • 같지않다 (a != b)

  • 크다 (a > b)

  • 작다 (a < b)

  • 크거나 같다 (a >= b)

  • 작거나 같다 (a <= b)

위와 같은 종류가 존재합니다.

 

 

같은 타입의 값을 갖는 두 개의 튜플을 비교할 수도 있습니다. 튜플의 비교는 왼쪽에서 오른쪽으로 이루어지며 한 번에 한 개의 값만 비교합니다. 즉, (a, b) == (c, d)와 같은 연산은 a == c와 b == d를 순차적으로 비교합니다. (모두 조건이 성립되어야 TRUE가 됩니다.)

(1, "zebra") < (2, "apple")   // true, 1이 2보다 작고; zebra가 apple은 비교하지 않기 때문
(3, "apple") < (3, "bird")    // true 왼쪽 3이 오른쪽 3과 같고; apple은 bird보다 작기 때문
(4, "dog") == (4, "dog")      // true 왼쪽 4는 오른쪽 4와 같고 왼쪽 dog는 오른쪽 dog와 같기 때문

삼항 연산자(Ternary Conditional Operator)

삼항 연산자는 if ~ else ~ 구문을 간편하게 사용하게 해주는 연산자입니다.

대표적인 형태는 (조건) ? (참일 때) : (거짓일 때) 와 같은 형태를 지니게 됩니다.

let num1 = 40
let isTrue = true
let num2 = num1 + (isTrue ? 10 : 20)

// num2 => 50 (40 + 10)

Nil 병합 연산자(Nil-Coalescing Operator)

nil 병합 연산자는 a ?? b 형태를 갖는 연산자 입니다. Optional 변수 a를 Unwrapping 한 후 만약 anil 인 경우 b를 반환합니다.

let str1 = "red"
var str2: String?   // 이 값은 default로 nil입니다.

var strSelect = str2 ?? str1

범위 연산자

닫힌 범위 연산자

범위의 시작과 범위의 끝이 있는 연산자입니다.

for index in 1...5 {
    print("\(index)")
}

반-닫힌 범위 연산자

범위의 시작과 끝 중 하나만 존재하는 연산자입니다.

let alphabets = ["A", "B", "C", "D"]
let count = alphabets.count
for i in 0..<count {
    print("Index \(i + 1) => \(alphabets[i])")
}

// 1 => A
// 2 => B
// 3 => C
// 4 => D

단방향 범위 연산자

범위의 시작 혹은 끝만 지정해 사용하는 범위 연산자 입니다. 지정한 시작 값 혹은 끝 값은 범위에 포함됩니다.

// 위의 예시에 있는 리스트를 참고

for alphabet in alphabets[2...] {
    print(alphabet)
}
// C
// D

for alphabet in alphabets[...2] {
    print(alphabet)
}
// A
// B
// C

단방향 범위 연산자는 값이 포함되었는지 검사할 경우에도 사용할 수 있습니다.

let range = ...5
range.contains(7)   // false
range.contains(4)   // true
range.contains(-1)  // true

논리 연산자

논리 연산자는 &&, ||, ! 3가지 대표 형태가 있습니다.

&& : and, || : or, ! : not

 

 

이번 포스트에서는 연산자에 대해 알아보았습니다.

반응형
LIST

'프로그래밍언어 > Swift' 카테고리의 다른 글

Swift 함수  (0) 2020.02.23
Swift 메모리 안정성  (0) 2020.02.16
Swift 제어문 (조건문, 반복문)  (0) 2020.02.14
Swift Collection Types (컬렉션 타입)  (0) 2020.02.10
Swift 문자열과 문자  (0) 2020.02.09
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함