본문 바로가기

SWIFT 공식문서 문법 알아보기/02. Basic Operators

Swift 공식문서 해설 Basic Operators - Compound Assignment Operators, Comparison Operators (2-3)

복합 지정 연산자 (Compound Assignment Operators)

C언어처럼 스위프트는 복합 지정 연산자를  복합 지정(=)과 다른 연산자를 결합하는 것을 제공합니다. 한 예로 덧셈 지정 연산자(+=)입니다. 

 

var a = 1
a += 2
// a is now equal to 3

 

a += 2 표현은  a = a + 2라는 표현을 짧게 줄여 표현한 것입니다. 효과적으로 덧셈과 지정을 2가지 일을 동시에 수행하는 하나의 연산자로 결합되어졌습니다. 

NOTE

복합 지정 연산자는 값을 반환하지 않습니다. 예를 들면 let b = a += 2는  쓸 수 없습니다. 

비교 연산자 (Comparison Operators)

스위프는는 표준 C언어의 비교 연산자 모두를 지원합니다.

 

  • (a == b) // a와 b는 동일
  • (a != b) // a와 b는 같지 않음
  • (a > b) // a는 b보다 크다
  • (a < b) // a는 b보다 작다
  • (a >= b) // a는 b보다 크거나 같음
  • (a <= b) //  a는 b보다 작거나 같음

NOTE

스위프트는 2개의 identity 연산자(=== and!==)를 제공하는데 두 객체 참조가 모두 같은 경우를 참조하는지  테스트를 하기 위해 사용됩니다. 

 

각각의 비교연산자는 구문이 true 인지 아닌지를 나타내기 위해 Bool 값을 반환합니다.

 

  1. 1 == 1 // 1과 1은 같기 때문에 true
  2. 2 != 1 // 2는 1과 같지 않기 때문에 true
  3. 2 > 1 // 2는 1보다 크기 때문에 true
  4. 1 < 2 // 1은 2보다 작기 때문에 true
  5. 1 >= 1 // 1은 1보다 크거나 작기 때문에 true
  6. 2 <= 1 // 2는 1보다 작거나 같기 때문에 false

비교 연산자는 if 구문에 자주 이용됩니다. 

 

let name = "world"
if name == "world" {
print("hello, world")
} else {
print("I'm sorry \(name), but I don't recognize you")
}
// Prints "hello, world", because name is indeed equal to "world".

 

if 구문에 대한 자세한 내용은 Control Flow를 참조하면 됩니다.

 

https://iosbeginner.tistory.com/12

 

Swift 공식문서 해설 Control Flow - Conditional Statements (5-2)

조건문 (Conditional Statements) 조건문은 특정 조건에 따라 다른 코드 조각들을 실행하기 위해 유용합니다. 오류가 발생하거나 값이 너무 높거나 낮을 경우 메시지를 보여주기 원할 때 코드가 실행되기 원할지도..

iosbeginner.tistory.com

 

만약 같은 타입과 같은 값을 갖는 숫자라면 두개의 tuples를 비교할 수 있습니다. 같지 않은 2개의 값을 찾을 때 까지 tuples는 한 번에 한 값씩 왼쪽에서 오른쪽으로 비교합니다. 두 개의 값들은 비교되고 그 결과는 tuple 비교의 전체 결과를 결정합니다. 만약 모든 요소가 동일하다면 tuples 자체는 동일합니다.

 

(1, "zebra") < (2, "apple") // true because 1 is less than 2; "zebra" and "apple" are not 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"

 

위의 예제를 보면 첫번째 줄에서 왼쪽에서 오른쪽으로 비교하는 것을 볼 수 있습니다. 1은 2보다 작기 때문에 (1, "zebra")은 tupels의 다른 값과 관계 없이 (2, "apple")보다 작은 것으로 간주됩니다. 비교는 이미 tuples 의 첫 번째 요소에 의해 결정되기 때문에 "zebra"가 "apple" 보다 작은 것은 중요하지 않습니다. 그러나 tuples의 첫 번째 요소가 같은 때는 2번째 요소를 비교합니다. 이것이 2번째와 3번째 줄에서 일어나는 것입니다. 

 

 Tuples는 각각의 tuples의 각 값에 연산자를 적용할 수 있는 경우에만 연산자로 비교가 가능합니다. 

예를 들어 아래의 코드에서 보여준것 처럼 (String, Int)와 같이 두개의 tuples의 타입은 비교가 가능합니다. String과 Int 값은 < 연산자를 사용하여 비교가 가능합니다. 이와 반대로 2개의 tuples 타입인 (String, Bool)은 Bool 값은 <연산자로 비교가 불가능하기 때문에 < 연산자로 비교할 수 없습니다.  

 

("blue", -1) < ("purple", 1) // OK, evaluates to true
("blue", false) < ("purple", true) // Error because < can't compare Boolean values

NOTE

스위프트 표준 라이브러리에는 7개 요소 보다 적은 tuples 비교 연산자를 포함합니다. 7개 혹은 그 이상의 요소를 tuples로 비교하기 위해서는 비교 연산자를 직접 실행해야 합니다.