할당 연산자(Assignment Operator)
- 값 초기화 및 변경. 상수, 변수에 모두 사용 가능
- 튜플을 이용해 여러 값 한 번에 할당 가능
let b = 10
var a = 5
a = b
print(a) // 10
let(x,y) = (1,2)
print(x, y) //1 2
if x = y {
//x = y는 값을 반환하지 않기 때문에 올바른 문법이 아님
}
if x == y {
print("same")
} else {
print("different")
}
// different
사칙 연산자 (Arithmetic Operators)
- 모든 숫자 형에서 사칙 연산자 지원
- 덧셈 연산자로 문자열 합치기 가능
"hello, " + "world"
// hello, world
나머지 연산자 (Remainder Operator)
- a % b와 같이 나머지 연산자 지원
9 % 4 //1
-9 % 4 //-1
단항 음수 연산자 (Unary Minus Operator)
- 숫자 값은 -로 표현되는 단항 음수 연산자에 의해 부호 변함
let three = 3 //3
let minuxThree = -three //-3
let plusThree = -minusThree //3
단항 양수 연산자 (Unary Plus Operator)
- +로 표현되는 단항 양수 연산자는 부호에 아무런 영향 끼치지 않음
let minusSix = -6
let alsoMinusSix = +minusSix //-6
합성 할당 연산자 (Compound Assignment Operators)
- 할당 연산과 덧셈 연산으로 구성된 연산을 합성해 += 형태로 축약 사용 가능
var a = 1
a += 2 // 3
비교 연산자 (Comparison Operators)
- 표준 C에서 제공하는 비교 연산자 모두 지원
1 == 1 // true
2 != 1 // true
2 > 1 // true
1 < 2 // true
1 >= 1 // true
2 <= 1 // false
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") // true, 1이 2보다 작으니 true
(3, "apple") < (3, "bird") // true 3과 3은 같고, apple은 bird보다 작으니 true
(4, "dog") == (4, "dog") // true 4와 4는 같고, dog와 dog는 같으니 true
삼항 조건 연산자(Ternary Conditional Operator)
- question ? answer1 : answer2의 구조
- question 조건이 참인경우 answer1이 거짓인 경우 answer2가 실행
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight는 90 (40 + 50)
Nil 병합 연산자(Nil-Coalescing Operator)
- a ?? b 형태를 갖는 연산자
- a가 nil 인 경우 b를 반환
let defaultColorName = "red"
var userDefinedColorName: String? // 이 값은 defaults 값 nil입니다.
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorNam이 nil이므로 colorNameToUse 값은 defaultColorName인 "red"가 설정
범위 연산자(Range Operators) - 닫힌 범위 연산자(Closed Range Operator)
- (a..b)의 형태로 범위의 시작과 끝이 있는 연산자
for index in 1...5 {
print("\(index) times 5 is \(index * 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
범위 연산자(Range Operators) - 반 닫힌 범위 연산자(Half-Open Range Operator)
- (a..<b)의 형태로 a부터 b보다 작을 때까지의 범위
- 배열이 배열의 크기 - 1의 인덱스를 갖기 때문에 이 반 닫힌 범위 연산자는 배열을 다루는데 유용
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
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
범위 연산자(Range Operators) - 단방향 범위(One-Side Ranges)
- [a..] [..a]의 형태로 범위의 시작 혹은 끝만 지정해 사용하는 범위 연산자
- 지정한 시작 값 혹은 끝 값은 범위에 포함
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
- 단방향 범위 연산자는 subscript뿐만 아니라 아래와 같이 특정 값을 포함하는지 여부를 확인할 때도 사용 가능
let range = ...5
range.contains(7) // false
range.contains(4) // true
range.contains(-1) // true
논리 연산자(Logical Operators) - 논리 부정 연산자(Logical NOT Operator)
let allowedEntry = false
if !allowedEntry {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
논리 연산자(Logical Operators) - 논리 곱 연산자(Logical AND Operator)
let enteredDoorCode = true
let passedRetinaScan = false
if enteredDoorCode && passedRetinaScan {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "ACCESS DENIED"
논리 연산자(Logical Operators) - 논리 합(OR) 연산자(Logical OR Operator)
let hasDoorKey = false
let knowsOverridePassword = true
if hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
논리 연산자(Logical Operators) - 논리 연산자의 조합(Combining Logical Operators)
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
논리 연산자(Logical Operators) - 명시적 괄호(Explicit Parentheses)
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"
'프로그래밍 > iOS-Swift' 카테고리의 다른 글
[SWIFT] View Controller 수명주기 (0) | 2021.04.02 |
---|---|
[SWIFT] 로컬 파일 로드하는 방법 (1) | 2021.03.31 |
[SWIFT] WKWebView (0) | 2021.03.31 |
[SWIFT] Lamp On Off App (0) | 2021.03.31 |
[SWIFT] Xcode 프로젝트 생성 (0) | 2021.03.30 |
댓글