iOS/swift

[Swift 공식문서 정리] - 기본 연산자 (Basic Operators)

skyiOS 2021. 10. 21. 21:32
반응형

용어(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!"
반응형