티스토리 뷰
이번 포스트에서는 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 한 후 만약 a가 nil 인 경우 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
이번 포스트에서는 연산자에 대해 알아보았습니다.
'프로그래밍언어 > 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
- 스위프트
- 안드로이드
- Reactive programming
- C++
- CloudComputing
- Kotlin
- retrofit
- 코틀린
- java
- 함수형
- 애플워치
- apple
- databinding
- Rxjava
- SwiftUI
- Elliotable
- 상속
- 함수형프로그래밍
- Apple Watch
- Swift
- 오토레이아웃
- 아이폰
- 알고리즘
- XCode
- android
- Auto Layout
- ios
- watchos
- 컬렉션
- Notissu
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |