스위프트 문법 2 (연산자)

스위프트 문법 2 (연산자)

- 5 mins

Operators

간단한 용어 정리

Assignment Operators (할당 연산자)

변수에 값을 할당할때 특정한 값을 할당 하는것 외에 연산과 동시에 값을 할당할 수 있다.

// 기본적으로 아래와 같이 특정한 값을 할당 할 수 있다.
var value = 0

// 아래와 같이 연산과 동시에 할당 할 수 있다.
value = value + 10
value = value - 5
value = value * 2
value = value / 2
value = value % 2

// 위의 연산 할당을 아래와 같이 간단하게 할 수 있다.
value += 10
value -= 5
value *= 2
value /= 2
value %= 2

다른 언어에서 쓰이는 a++는 Swift에서 쓸 수 없다.


Arithmetic Operators (수리 연산)

스위프트도 다른언어에서 쓰는 대부분의 수리 연산을 사용할 수 있다.

// Unary plus opertor (단항 더하기)
+a

// Addition Operator (더하기)
a + b
Hello,  + world

// Unary minus Operator (단항 빼기)
-a

// Subtraction Operator (빼기)
a - b

// Multiplication Operator (곱하기)
a * b

// Division Operator (나누기)
b / a

// Modulo operator (나누고 남은 값)
b % a

Overflow Operators

정해진 타입의 최대 혹은 최소의 값을 초과할대 Overflow 오류가 발생한다. 특수한 상황에서 이러한 Overflow가 아닌 초과된 값을 계산하고 싶을때는 &를 이용하면 된다.

var add: Int8 = Int8.max &+ 1
var subtract: Int8 = Int8.min &- 1

Comparison Operators (비교 연산자)

같은 타입의 값을 비교할때 아래의 비교 연산자들을 사용한다. 리턴 타입은 Bool이다.

// Equal to operator (같은지 비교)
a == b

// Not equal to operator (다른지 비교)
a != b

// Greater than operator (값이 큰지 비교)
a > b

// Greater than or equal to operator (값이 크거나 같은지 비교)
a >= b

// Less than operator (값이 작은지 비교)
a < b

// Less than or equal to operator (값이 작거나 같은지 비교)
a <= b

Logical Operators (논리 연산자)

논리연산자에는 크게 And, Or, Not이 있다.

And Operator: 둘 다 참일때 참

A B Result
T T T
T F F
F T F
F F F

OR Operator: 둘중에 하나라도 참이면 참

A B Result
T T T
T F T
F T T
F F F

Not Operator: 참이면 거짓으로, 거짓으면 참으로

A Result
T F
F F


if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
  print(Open the door)
} else {
  print(Cant open the door)
}
간단한 예제

논리 연산에서 순서는 매우 중요하다.


Ternary Conditional Operator (3항 연산자)

a > 0 ? "positive" : "zero or negative"
//아래와 같음
if a>0 {
    "positive"
} else {
    "zero or negative"
}

Range Operators (범위 연산자)

Closed Range Operator

0…100 이런식으로 사용 (0이상 100이하)

for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}


Half-Open Range Operator

0..<100 이런식으로 사용 (0이상 100미만)

let names = ["Anna", "Alex", "Brain", "Jack"]
let count = names.count
for i in 0..<count { //index가 0부터 시작하기 때문에 count미만으로 실행해야함
    print(i)
}


One-Sided Ranges

시작값 혹은 마지막 값을 지정해주어 범위를 지정함 1… / …100 / ..<100

names[2...] //Brain, Jack
names[...2] //Anna, Alex, Brain
names[..<2] //Anna, Alex


원하는 배열이나 데이터를 반대로 출력하고 싶을때 reversed함수 사용

for i in (1...100).reversed() {
    print(i)
}
comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora