반응형
용어(Terminology)
연산자에는 단항(unary), 이항(binary), 삼항(ternary) 연산자가 있다.
- 단항연산자 : -a, !b, c! 와 같이 하나의 대상 앞뒤에 바로 붙여 사용 하는 연산자
- 이항 연산자 : 2+3 과 같이 두 대상 사이에 위치하는 연산자.
- 삼항 연산자 : 삼항 연산자의 종류는 a ? b : c 형태로 단 한가지만 존재한다.
할당 연산자 ( Assignment Operator)
값을 초기화 시키거나 변경한다. 아래와 같이 상수, 변수에 사용이 가능하다.
let b = 10
var a = 5
a = b
// a 값은 10
아래와 같이 튜플을 이용해 여러 값을 한번에 할당할 수 있다.
let (x, y) = (1, 2)
// x는1 y는 2
사칙 연산자( Arithmetic Operators)
Swift는 모든 숫자 형에서 사용 가능한 4가지 표준 사칙 연산자를 지원한다.
- 덧셈(+)
- 뺄셈 (-)
- 곱셉 (*)
- 나눗셈 (/)
- 나머지(%)
1 + 2 // 3
5 - 3 // 2
2 * 3 // 6
10.0 / 2.0 // 5.0
10 % 4 // 2
"hello" + "Swift" // "helloSwift"
// 문자열 끼리의 덧셈은 문자열을 합치기 위해 사용할 수 있다.
합성 할당 연산자 (Compound Assignment Operators)
a = a +2 와 같이 할당 연산과 덧셈연산으로 구성된 연산을 합성해 += 형태로 축약해 사용 가능하다.
var a = 1
a += 2 // a = a +2
// a는 3
반응형
비교 연산자
표준 c에서 제공하는 비교 연산자를 모두 지원한다. 각 비교 연산은 ture 혹은 false 값을 반환한다.
- 같다( a==b)
- 같지않다( a != b)
- 크다 ( a> b)
- 작다 ( a<b)
- 크거나 같다 ( a >= b )
- 작거나 같다 ( a <= b )
1 == 1 //true
2 != 1 //true
2 > 1 //true
2 < 1 //false
1 >= 1 //true
2 <= 1 //true
삼항 조건 연산자( Ternary Conditional Operator)
삼항 조건 연산자는 a ? b : c 의 구조를 갖는다. a(조건)가 참인경우 b, 거짓인 경우c 가 실행 됩니다. 삼항 조건 연산자를 풀어 쓰면 다음과 같다.
if a{
b
}else {
c
}
Nil 병합 연산자 (Nil - Coalescing Operator)
nil 병합 연산자는 a ?? b 의 형태를 갖는 연산자 입니다. 옵셔널 a를 벗겨서(unwraps) 만약 a가 nil인 경우 b를 반환한다.
nil 병합 연산자를 풀어쓰면 다음과 같다.
a != nil ? a! : b
범위 연산자( Range Operatores)
닫힌 범위 연산자(Closed Range Operator)
(a..b) 의 형태로 시작과 끝이 있는 연산자 입니다. for in loop에 주로 사용됩니다.
for index in 1...5{
print(index)
}
// 1
// 2
// 3
// 4
// 5
반 닫힌 범위 연산자( Half-Open Range Operator)
(a ..<b)의 형태로 a 부터 b보다 작을 때 까지의 범위를 갖는다.
즉, a 부터 b-1 까지의 값을 갖는다. 배열을 다루는데 유용하다.
let names = ["Anna","Alex","Brian","Jack"]
let count = names.count // 위에서 선언된 names의 개수를 저장한다.
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
단방향 범위( One-Side Ranges)
[a..] [..a] 의 형태로 범위의 시작 혹은 끝만 지정해 사용하는 범위연산자.
let names = ["Anna","Alex","Brian","Jack"]
// 0 , 1 , 2 , 3
for name in names[2...] {
print(name)
}
// Brian
// Jack
for name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian
끝 값을 범위에 포함하고 싶지 않다면? 반 닫힌 연산자를 사용한다.
for name in names[..<2] {
print(name)
}
// Anna
// Alex
논리 연산자(Logical Opertors)
- 논리 부정 NOT(!a)
- 논리 곱 AND( a && b)
- 논리 합 OR (a | | b)
논리 부정 연산자 (Logical NOT Operator)
논리 부정 연산자 는 true를 false로 , false 를 true로 변환한다.
let allowedEntry = false
if !allowedEntry {
print(" ACCESS DENIED")
}
// Prints "ACCESS DENIED"
논리 곱 연산자(Logical AND Operator)
논리 곱 연산자 ( a && b) 는 두 값이 모두 참일 때 true 를 반환한다.
첫번째 값이 거짓 이라면 두 번째 값을 판단하지 않고 즉시 false를 반환한다. (short - circuit evaluation)
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
논리 합 연산자(Logical OR Operator)
논리 합 연산자 ( a | | b) 는 둘중 하나만 참이여도 true 를 반환한다.
첫번째 값이 참 이라면 두 번째 값을 판단하지 않고 즉시 true를 반환한다. (short - circuit evaluation)
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
논리 연산자의 조합 (Combining Logical Operators)
여러 개의 논리 연산자를 조합하여 사용할 수 있다.
&&와 || 는 왼쪽에서 오른쪽 순서로 읽는다
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
명시적 괄호 (Explicit Parentheses)
논리 연산자의 적용 우선 순위를 연산자에 맡기지 않고 명시적으로 괄호를 사용해 계산 순서를 지정할 수 있다.
이러한 방법은 가독성을 높이는데 도움을 준다.
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
반응형
'iOS > swift' 카테고리의 다른 글
[Swift 공식문서 정리] - 함수 (Functions) (0) | 2021.11.10 |
---|---|
[Swift 공식문서 정리] - 제어문(Control Flow) (0) | 2021.10.21 |
[Swift 공식문서 정리] - 콜렉션타입 (Collection Types) (0) | 2021.10.21 |
[Swift 공식문서 정리] - 문자열과 문자( Strings and Characters) (0) | 2021.10.21 |
[Swift 공식문서 정리] - 상수 , 변수, 데이터타입 (0) | 2021.10.21 |