GGURUPiOS

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

Swift/공식문서 정리 ( 문법 )

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

꾸럽 2023. 4. 18. 17:21

Basic Operators (기본 연산자)

연산자는 값을 확인, 변경, 결합 하는 데 사용하는 기호 같은 것들임 ( +, -, && 등등 )

할당 연산자 ( = )

let b = 10
var a = 5
a = b // a에 b의 값을 할당 

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

// = 는 값을 반환 하지 않음 ~~if x = y { } 틀린 구문임~~
// if x == y { } 가 맞는 구문 

산술 연산자 ( +, -, *, / )

일반적인 산술 연산자. 상식과 같은선에서 동작함

알아둘 점은 String에도 더하기 연산자가 지원됨 “hello, “ + “world” 와 같이 사용 가능


나머지 연산자 ( % )

나머지를 구하는 연산자임.

9 % 4 // 1 반환
-9 % 4 // -1 반환 

단항 더하기, 빼기 연산자 ( + , - )

일반적으로 생각하듯이 부호를 바꿀 수 있음

그러나 단항 더하기 연산자는 아무런 작동하지 않음

let three = 3
let minusThree = -three // -3 반환
let plusThree = -minusThree // 3 반환

let minusSix = -6
let alsoMinusSix = +minusSix // -6 반환

복합 할당 연산자

-=, += 처럼 사용 가능

그러나 값을 반환하지는 않음

var a = 1
a += 2  // a는 현재 3

비교 연산자

  • 같음 ( a == b)
  • 같지 않음 ( a != b)
  • 보다 큼 ( a > b)
  • 미만 ( a < b )
  • 크거나 같음 ( a >= b )
  • 보다 작거나 같음( a <= b )

상식선에서 동작해서 쉽게 이해할 수 있다.

튜플에서는 어떻게 동작할까 ?

(1, "zebra") < (2, "apple")   // true because 1 is less than 2; "zebra" and "apple" aren't compared
(3, "apple") < (3, "bird")    // true because 3 is equal to 3, and "apple" is less than "bird"
(4, "dog") == (4, "dog")      // true because 4 is equal to 4, and "dog" is equal to "dog"

// 공식문서에서
// 왼쪽 요소부터 하나씩 비교하고, 같지 않은 값이 나올 때 까지 전체 결과를 결정한다고 나와있다.
// 하지만 튜플 유형의 연산자를 값에 적용할 수 있을 때만 사용 가능하다고 나와있다.

// (String, bool) 의 경우 bool 은 ==이나 !=는 적용할 수 있지만, 부등호는 적용할 수 없기 때문에
// ("a", true) < ("a", false) 같은 경우는 에러가 발생한다.

삼항 조건부 연산자 ( 삼항 연산자 )

if 문의 줄임말이라고 보면 됨

if question { a } else { b } ⇒ question ? a : b 이런식으로 작성한다.

어떻게 사용할 것인지는 고려를 해야한다.

코드는 간결해지지만, 남용되면 코드를 읽기 어렵게 만들 수 있기 때문


Nil 병합 연산자 ( nil-coalescing ) ( ?? )

이 연산자는 아래 코드의 줄임말이다.

a != nil ? a!: b

옵셔널 언래핑의 한 방법 인데, 연산자를 사용해서 풀 수 있다.

쉽게 이해하자면 nil일 경우에 값을 지정해 주는 것이라고 생각하면 됨

let colorName = "red"
var userColor: String? // Optional

var colorNameToUse = userColor ?? colorName
// 유저 컬러에 값이 있으면 그 값을 쓰고, 아니면 colorName 의 값을 써라 정도로 이해

범위 연산자

폐쇄 범위 연산자 (…)

a…b ⇒ a부터 b까지(b포함)

반 개방 범위 연산자 (..<)

a..<b ⇒ a부터 b전까지 (b 미포함)

단측 범위 (a…)

a… ⇒ a부터 끝까지


논리 연산자

  • 논리적 NOT( !a )
  • 논리적 AND( a && b )
  • 논리적 OR( a || b )

여러 논리 연산자를 쓰는 복합 표현식은 가장 왼쪽 하위 표현식을 먼저 평가한다.


명시적 괄호

복잡한 표현식을 더 쉽게 읽을 수 있도록 괄호를 추가하여 의도를 명시하는 것이 유용함

if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
    print("Welcome!")
} else {
    print("ACCESS DENIED")
}