Swift 기본연산자

1. 기본연산자

할당 연산자 (Assignment Opertor)

값을 초기화 시키거나 변경합니다. 튜플을 이용해 한번에 할당할 수 있습니다.

1
let (x,y) = (1,2)

C나 Objective-C와 다르게 Swift에서는 할당 연산자가 값을 반환하니 않습니다. 이는 동등 연산 비교를 사용해야 하는 곳에 실수로 할당 연산자를 사용하는 것을 막기 위함입니다.

사칙 연산자(Arthmetic Operators)

C나 Objective-C와 달리 Swift는 사칙 연산의 값이 오버플로우 되는 것을 허용하지 않습니다. 만약 허용하고 싶다면 어버플로우 연산자를 이용해야 합니다.

단항 음수, 양수 연산자

숫자 값은 -+ 로 표현되는 단항 연산자를 통해 부호를 결정할 수 있습니다.

1
2
3
let three = 3 
let minusThree = -three
let alsoPlusThree = +three

합성 할당 연산자(Compound Assignment Operaotors)

+= 같이 할당 연산자와 사칙연산 연산자의 조합을 사용 가능합니다.

비교 연산자(Comparison Operators)

기본적으로 다른 언어에서 제공되는 비교 연산자를 모두 지원합니다. 추가적으로 Swift는 객체 비교를 위해 식별자 ===!== 를 제공합니다.

같은 타입의 값을 갖는 두 개의 튜플을 비교할 수 있습니다. 튜플의 비교는 왼쪽에서 오른쪽으로 이루어 지고 한번에 한개의 값만 비교한후 결과를 반환합니다.

1
2
(1, "zebra") < (2, "apple") // true
(3, "apple") < (3, "brid)" // true

만약 타입이 달라서 비교할수 없는 경우는 에러가 발생합니다.

1
("blue", false) < ("purple", true) // 에러 , Boolen 값은 < 로 비교할 수 없음.

상함 조건 연산자(Ternary Conditional Operator)

question ? answer1 : answer2 와 같은 형태로 조건이 참일 경우 answer1 이 조건이 거짓일 경우 answer2 가 실행됩니다.

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

a ?? b 형태를 갖는 연산자 입니다. 옵셔널 a 를 unwrap 해서 만약 nil 이면 b 를 반환합니다.

1
2
3
4
let defaultColorName = "red"
var userDefinedColorName: String?

var colorNameToUse = userDefinedColorName ?? defaultColorName

userDefinedColorNamenil 이 되기 때문에 defaultColorName 인 red 가 사용되게 됩니다.

범위 연산자 (Range Operators)

닫힌 범위 연산자(Closed Range Operator)

(a..b) 의 형태로 범위의 시작과 끝이 있는 연산자 입니다. 마지막 숫자인 b를 포함합니다.

1
2
3
4
5
6
7
8
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

반 닫힘 범위 연산자(Half-Open Range Operator)

(a..<b) 의 형태로 a 부터 b 보다 작을 때까지의 범위를 갖습니다.

단방향 범위(One-Side Ranges)

[a..] [..a] 의 형태로 범위의 시작 혹은 끝만 지정해 사용하는 범위 연산자 입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names[2...] {
print(name)
}
// Brian
// Jack

for name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian

마찬가지로 받 단힘 연산자도 사용 가능합니다. 또한, 특정 값을 포함하는지 여부를 확인할 때도 사용 가능합니다.

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

논리 연산자(Logical Operators)

Swift 에서는 세가지 표준 논리 연산자를 지원합니다.

  • 논리 부정 NOT (!a)
  • 논리 곱 AND (a && b)
  • 논리 합 OR (a || b)

Swift의 논리 연산자 && 와 || 는 왼쪽의 표현을 우선해서 논리 계산을 합니다.

명시적 괄호 (Explicit Parentheses)

논리 연산자의 적용 우선 순위를 연산자에게 맡기지 않고 명시적으로 괄화를 사용해 계산 순서를 정할 수 있습니다.

1
2
3
4
5
6
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
print("Welcome!")
} else {
print("ACCESS DENIED")
}
// Prints "Welcome!"