[Swift] 연산자

Wody·2021년 3월 20일
0

출처 : The Swift Language Guide

기본 연산자(Basic Operator)

swift에서는 산술연산자, 논리연산자, 범위연산자를 지원

  • 산술연산자 (+,-,/,%)
  • 논리연산자 (&&, ||)
  • 범위연산자 (a..<b, a...b)

용어(Terminology)

연산자에는 단항(unary), 이항(binary), 삼항(ternary) 연산자가 있습니다.

  • 단항 연산자 (-a, !b, c!)와 같이 하나의 대상에 앞뒤로 바로 붙여 사용하는 연산자
  • 이항 연산자 (2+3) 같이 두 대상 사이에 위치하는 연산자
  • 삼항 연산자 (a ? b : c) 형태로 Swift에 삼항 연산자는 이 예시 단 하나만 존재

할당 연산자(Assignment Operator)

할당연산자는 값을 초기화 시키거나 변경합니다. 상수와 변수 모두에 사용 가능합니다

let b = 10
var a = 5
a = 5
// a 값은 10

튜플을 활용한 여러 값 할당

let (x, y) = (1, 2)
// x는 1, y 값은 2가 됩니다.

사칙 연산자(Arithmetic Operators)

  • 덧셈 ( + )
  • 뺄셈 ( - )
  • 곱셈 ( * )
  • 나눗셈 ( / )

나머지 연산자(Remainder Operator)

a % b와 같이 나머지 연산

9 % 4 //	1
6 % 4 // 	2
-9 % 4 // 	-1

단항 음수 연산자(Unary Minus Operator)

숫자값은 -로 표현되는 단항 음수 연산자에 의해 부호가 변경

let five = 5
let minusFive = -5
let plusFive = -minusFive // 5

단항 양수 연산자(Unary Plus Operator)

+로 표현되는 단항 양수 연산자는 부호에 아무런 영향을 끼치지 않습니다.

let minusFive = -5
let alsoMinusFive = +minusFive

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

a = a + 2 와 같이 할당연산(=)과 덧셈연산(+)으로 구성된 연산을 합성해 += 형태로 축약해 사용

var one = 1
one += 2 // one = 3

비교 연산자(Compairison Operators)

  • 같다 ( a == b )
  • 같지않다 ( a != b )
  • 크다 ( a > b )
  • 작다 ( a < b )
  • 크거나 같다 ( a >= b )
  • 작거나 같다 ( a <= b )
    // 객체 비교를 위한 식별 연산자 ===, !== 제공
let name = "Wody"
if name == "Wody" {
	print("hello Wody")
} else {
	print("Who are you \(name)?") 
}

삼항 조건 연산자(Ternary Conditional Operator)

question ? answer1 : answer2 // question 조건이 참인경우 answer1, 거짓인 경우 answer2 실행 고로 아래 코드의 축약과 같다.

if question {
	answer1
} else {
	answer2
}

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

nil 병합 연산자는 a ?? b 형태를 갖는 연산자. 옵셔널 a를 벗겨서(unwraps) 만약 a가 nil 인경우 b를 반환합니다. 이 nil 병합 연산자는 다음 코드의 축약형입니다.

a != nil ? a! : b

// 개별적인 해석
(a != nil) a의 값이 nil이 아니다
true -> a! 실행( a를 강제 unwraps 한 값을 반환
false -> b 값 반환

범위 연산자 (Range Operators)

  • 닫힌 범위 연산자(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까지의 값
for index 1..<6 {
	print(index)
}
// 1
// 2
// 3
// 4
// 5

단방향 범위(One-Side Ranges)

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

let names = ["Wody", "James", "Jack", "Alex", "Anna"]

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

for name in names[...2] {
	print(name)
}
// Wody
// James
// Jack

논리 연산자(Logical Operators)

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

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

논리 부정 연산자(Logical NOT Operator)

let isBool = false

if !isBool {
	print("Logical NOT work")
}
// Prints "Logical NOT work"

논리 곱 연산자 (Logical AND Operator)

let conditionA = true
let conditionB = false
if conditionA && conditionB {
	print("pass")
} else {
	print("nonPass")
}
// Prints "nonPass"

논리 합 연산자(Logical OR Operator)

let A = true
let B = false

if A || B {
	print("pass")
} else {
	print("nonPass")
}
// Prints "pass"

논리 연산자의 조합(Combining Logical Operators)

두 개 이상의 논리 연산자를 조합해 사용할 수 있음. &&와 ||는 왼쪽의 표현을 우선해서 논리 계산함.

let A = true
let B = true
let C = false
let D = false

if A && B || C || D {
	print("pass")
} else { 
	print("nonPass")
}
// Prints "pass"

명시적 괄호(Explicit Parentheses)

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

let A = true
let B = true
let C = false
let D = false

if A && B || (C || D) {
	print("pass")
} else { 
	print("nonPass")
}
// Prints "pass"
// A && B -> true
// C || D -> false
// (A && B) || (C || D) -> (true) || (false) -> true

0개의 댓글