티스토리 뷰
연산자 용어
- 단항 연산자
-a !b c!
- 이항 연산자
2 + 3
- 삼항 연산자
a ? b : c // a가 true면 b를 return // 아니면 (else) c를 return
할당 연산자
상수, 변수에 모두 사용 가능하며, 값을 초기화 시키거나 변경 합니다.
let b = 10
var a = 5
a = b // a 값은 10
여러 값을 한번에 할당 할 수도 있습니다.
let (x, y) = (1, 2)
// x 값은 1, y 값은 2
사칙 연산자
- 덧셈 ( + ), 뺄셈 ( - ), 곱셈( * ), 나눗셈( / )
나머지 연산자
a % b 와 같이 나머지 연산을 지원합니다.
11 % 2 // 1
8 % 2 // 0
단항 음수 연산자
let three = 3 // 3
let minusThree = -three // -3
let plusThree = -minusThree // 3
단항 양수 연산자
let minusSix = -6
let alsoMinusSix = +minusSix // alsoMinusSix는 -6
합성 할당 연산자
var a = 1
a += 2 // a = a + 2 와 같은 뜻
// 결과 값 : a는 3
// 실습1
var b = 3
b -= 3
답: 0
비교 연산자
각 비교 연산은 true와 false 값을 반환 합니다.
// 같다
a == b
1 == 1 // true
// 같지않다
a != b
2 != 1 // true
// 크다, 작다
a > b
a < b
2 > 3 // false
// 크거나 같다, 작거나 같다
a >= b
a <= b
2 <= 1 // false
// 실습2
nil == "" // 답:
nil == 0 // 답:
답: false/ false
같은 타입을 갖는 두 개의 튜플을 비교할 수 있습니다.
튜플의 비교는 각 첫번째 항을 비교 후 값이 같으면, 다음 항을 비교하여 Bool 값을 나타냅니다.
string을 비교할때는 abc(사전순서)로 비교합니다.
(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와 같기 때문
// 실습3
("zedd", 1) < ("peppo", 1) // 답은?
(true, 3) < (true, 4) // 답은?
답:
false
에러 (Bool 타입은 비교연산자로 비교불가)
삼항 조건 연산자
구조
question ? answer1 : answer2
question이 true일 경우 answer1
false일 경우 answer2 가 실행 됩니다.
if 문으로 바꿔보자면
if question {
answer1
} else {
answer2
}
예제
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight는 90 (40 + 50)
Nil 병합 연산자
구조
a ?? b
// a가 nil이 아니면 a를 내보내고, a가 nil이면 b를 내보냅니다.
// a != nil ? a! : b 와 같은 뜻 입니다.
예제
var defaultColorName = "red"
var userDefinedColorName: String? // 이 값은 현재 nil 입니다.
let colorNameToUse = userDefinedColorName ?? defaultColorName
// red
userDefinedColorName = "green"
let colorNameToUse = userDefinedColorName ?? defaultColorName
// green
범위 연산자
for-in loop에 자주 사용되며,시작과 끝이 있는 연산자 이고 ( a..b ) 의 형태 입니다.
for idx in 1...5 {
print("\(idx) times 5 is \(idx * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
반 닫힌 범위 연산자
( a..< b ) 의 형태로 a 부터 b 보다 작을때 까지 범위를 갖습니다.
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count // count는 4
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
단방향 범위 연산자
( a... )의 형태로 해당 부분 부터 끝까지, 또는 처음부터 a까지의 범위를 지정해 사용하는 범위 연산자 입니다.
let names = ["Anna", "Alex", "Brian", "Jack"]
// names 배열의 index 2번째 부터 끝까지
for name in names[2...] {
print(name)
}
// Brian
// Jack
// names 배열의 처음부터 index2까지
for name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian
논리 연산자
논리 부정 연산자
형태는 !a 이렇게 생겼으며, 값 앞에 ' ! ' 를 붙여 기존 Bool값의 반대를 나타냅니다.
let allowedEntry = true
if !allowedEntry {
print("ACCESS")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
논리 곱 연산자
형태는 ( a && b ) 이렇게 생겼으며, a와 b가 같을 경우 true를, 하나라도 다르면 false를 나타냅니다.
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
논리 합(OR) 연산자
형태는 ( a || b ) 이렇게 생겼으며, a와 b가 하나라도 true일 경우, true를 나타냅니다.
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
논리 연산자의 조합
논리 연산자를 조합해서 사용할 수 있습니다.
가독성을 높이기 위해 괄호를 사용해 코드의 의도를 더 명확하게 합시다 ~
let enteredDoorCode = true
let passedRetinaScan = false
let hasDoorKey = false
let knowsOverridePassword = true
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
결과 값: "Welcome!"
'iOS' 카테고리의 다른 글
[Swift] mutating (0) | 2021.12.11 |
---|---|
[Swift] The Basics (0) | 2021.12.08 |
[Swift] Lazy Stored Properties (지연 저장 프로퍼티) (0) | 2021.11.30 |
[iOS] DatePicker, DateFormatter (0) | 2021.11.25 |
[Swift] 프로퍼티 (Properties) (0) | 2021.11.24 |
- Total
- Today
- Yesterday
- Swift inout
- swift programmers
- Swift final
- Swift 프로그래머스
- Swift RIBs
- Swift joined
- Swift 프로퍼티
- Swift joined()
- Swift init
- Swift
- swift (programmers)
- Combine: Asynchronous Programming with Swift
- RTCCameraVideoCapturer
- RIBs tutorial
- iOS error
- Swift 내림차순
- Class
- Swift 알고리즘
- swift 고차함수
- swift reduce
- 원티드 프리온보딩
- swift property
- Swift ModernRIBs
- removeLast()
- CS 네트워크
- swift protocol
- 2023년 회고
- ios
- Swift Leetcode
- Swift Error Handling
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |