소소한개발팁
article thumbnail
반응형

1. Assignment Operator

 - 할당 연산자는 아래와 같습니다.

 

<swift />
let b = 10 var a = 5 a = b // a is now equal to 10

 

할당 연산자를 이용하여 아래와 같이도 값을 초기화할 수 있습니다.

 

<swift />
let (x, y) = (1, 2) // x is equal to 1, and y is equal to 2

 

 

2. Arithmetic Operators

 

  • 더하기 (+)
  • 빼기 (-)
  • 곱하기 (*)
  • 나누기 (/)

 

<swift />
1 + 2 // equals 3 5 - 3 // equals 2 2 * 3 // equals 6 10.0 / 2.5 // equals 4.0

 

 

3. Remainder Operator

  • 나머지 (%)

 - (%) 를 사용하여 구할 수 있으며 위의 그림은 공식 홈페이지에서 제공되는 9 % 4의 작동방식을 표현한 그림입니다.

 - 9 = (4 x 2) + 1

 

 

4. Unary Operator

 - 숫자 값 앞에 기호를 사용하여 토글할 수 있습니다. 

 

- 빼기 (-)

 

<swift />
let three = 3 let minusThree = -three // minusThree equals -3 let plusThree = -minusThree // plusThree equals 3, or "minus minus three"

 

- 더하기 (+)

 

<swift />
let minusSix = -6 let alsoMinusSix = +minusSix // alsoMinusSix equals -6

 

 

5. Compound Assignment Operators

Swift에서는 +=, -= 와 같은 복합 할당 연산자를 사용할 수 있습니다.

 

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

 

하지만 아래와 같은 형태로는 사용할 수 없습니다.

 

<swift />
let b = a += 2.

 

 

6. Comparison Operators

  • ~와 같다. (a == b)
  • ~와 같지 않다. (a != b)
  • a가 b보다 크다 (a > b)
  • a가 b보다 작다 (a < b)
  • a가 b보다 같거나 크다 (a >= b)
  • a가 b보다 같거나 작다 (a <= b)

- 아래는 예시입니다.

 

<swift />
1 == 1 // true because 1 is equal to 1 2 != 1 // true because 2 isn't equal to 1 2 > 1 // true because 2 is greater than 1 1 < 2 // true because 1 is less than 2 1 >= 1 // true because 1 is greater than or equal to 1 2 <= 1 // false because 2 isn't less than or equal to 1

 

- 보통 비교연산자는 조건문에서 많이 사용되며 아래와 같은 예시 형태입니다.

 

<swift />
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".

 

- 동일한 유형과 동일한 수의 값을 가진 두 튜플을 비교할 수 있습니다. 튜플은 왼쪽에서 오른쪽으로, 한 번에 한 값씩 비교되며, 비교가 같지 않은 두 값을 찾을 때까지 비교된다. 이 두 값을 비교하고, 그 비교의 결과가 튜플 비교의 전반적인 결과를 결정합니다. 모든 원소가 같다면, 튜플 자체는 동일합니다. 아래와 같은 예시입니다.

 

<swift />
(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"

 

- 위의 예에서 첫 번째 줄에 왼쪽에서 오른쪽으로 비교하는 동작을 볼 수 있습니다. 

왜냐하면 1 보다 2가 작기 때문입니다. 튜플의 뒤의 값은 무시합니다.

그러나, 두번째 줄과 세 번째 줄처럼 튜플의 첫 번째 원소가 같을 때, 튜플의 두 번째 원소를 비교합니다.

하지만 아래와 같이 Bool 값이 온다면 비교할 수 없으므로 에러가 발생합니다.

 

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

 

 

7. Ternary Conditional Operator

다중 조건 연산자는 question ? answer1 : answer2 형태로 이루어져 있습니다. question의 값이 참일 경우 answer1을 아닐 경우 answer2를 리턴합니다.

 

<swift />
if question { answer1 } else { answer2 }

 

- 테이블 행의 높이를 계산하는 예입니다.  행 높이는 행에 헤더가 있을 경우 내용 높이보다 50포인트, 행에 헤더가 없을 경우 20포인트 이상 커야 한다고 가정합니다.

 

<swift />
let contentHeight = 40 let hasHeader = true let rowHeight = contentHeight + (hasHeader ? 50 : 20) // rowHeight is equal to 90

 

- 위의 예시는 아래의 예시를 다중 조건 연산자로 표현한 식입니다.

 

<swift />
let contentHeight = 40 let hasHeader = true let rowHeight: Int if hasHeader { rowHeight = contentHeight + 50 } else { rowHeight = contentHeight + 20 } // rowHeight is equal to 90

 

 

8. Nil-Coalescing Operator

 

<swift />
a != nil ? a! : b

 

- 위의 식을 (a?? b)와 같이 축약할 수 있으며 아래와 같은 예시가 있습니다.

 

<swift />
let defaultColorName = "red" var userDefinedColorName: String? // defaults to nil var colorNameToUse = userDefinedColorName ?? defaultColorName // userDefinedColorName is nil, so colorNameToUse is set to the default of "red"

 

- 위의 식을 보면 userDefinedColorName의 값이 nil 값일 경우?? 뒤에 오는 defaultColorName 값이 colorNameToUse로 초기화되는 것을 확인할 수 있습니다. 아래는 nil 값이 아닐 경우의 예시입니다.

 

<swift />
userDefinedColorName = "green" colorNameToUse = userDefinedColorName ?? defaultColorName // userDefinedColorName isn't nil, so colorNameToUse is set to "green"

 

 

9. Range Operators

- Closed Range Operator로 ( ... ) 가 존재하며 ( a ... b ) 일 경우 a에서 b까지의 범위를 나타내며 이때  a의 값이 b의 값 보다 작아야 합니다. 예를 들어, 모든 값을 사용할 범위를 반복할 때 유용하며 for-in 루프에서 사용할 수 있습니다.

 

<swift />
for index in 1...5 { print("\(index) times 5 is \(index * 5)") } // 1 times 5 is 5 // 2 times 5 is 10 // 3 times 5 is 15 // 4 times 5 is 20 // 5 times 5 is 25

 

- Half-Open Range Operator 로 (.. < )가 존재하며 ( a.. < b) 일 경우 a에서 b 바로 앞까지의 범위를 나타냅니다. 특히 배열과 같은 제로 기반 목록으로 작업할 때 유용합니다.

 

<swift />
let names = ["홍길동", "김철수", "김명희", "김무"] let count = names.count for i in 0..<count { print("Person \(i + 1) is called \(names[i])") } // Person 1 is called 홍길동 // Person 2 is called 김철수 // Person 3 is called 김명희 // Person 4 is called 김무

 

- One-Sided Range는 [index...], [... index]와 같은 형식으로 아래와 같은 예시이며 여기서 index는 배열에서의 순서를 의미합니다. 밑의 예시 중 앞의 예시는 2번째 위치에서 끝까지 나열하는 것이므로 김명희와 김무가 오는 것이며 뒤의 예시는 똑같이 2번째 위치에서부터 앞의 끝까지 나열하는 것이므로 홍길동 김철수 김명희 가 오게 됩니다. 

 

<swift />
for name in names[2...] { print(name) } // 김명희 // 김무 for name in names[...2] { print(name) } // 홍길동 // 김철수 // 김명희 for name in names[..<2] { print(name) } // 홍길동 // 김철수

 

 

10. Logical Operators

  • NOT  (! a)
  • AND  (a && b)
  • OR    (a || b)

- NOT 연산자 예시입니다.

 

<swift />
let allowedEntry = false if !allowedEntry { print("ACCESS DENIED") } // Prints "ACCESS DENIED"

 

- AND 연산자 예시입니다.

 

<swift />
let enteredDoorCode = true let passedRetinaScan = false if enteredDoorCode && passedRetinaScan { print("Welcome!") } else { print("ACCESS DENIED") } // Prints "ACCESS DENIED"

 

- OR 연산자 예시입니다.

 

<swift />
let hasDoorKey = false let knowsOverridePassword = true if hasDoorKey || knowsOverridePassword { print("Welcome!") } else { print("ACCESS DENIED") } // Prints "Welcome!"

 

- 논리 연산자들의 조합 예시입니다.

 

<swift />
if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword { print("Welcome!") } else { print("ACCESS DENIED") } // Prints "Welcome!"

 

- 논리 연산자들의 조합에 명시적 괄호를 사용한 예시입니다. 명시적 괄호는 괄호를 넣음으로써 복잡한 조합을 읽기 쉽게 만들어주므로 복잡한 조합일 경우 사용하지 않았을 때보다 가독성 및 성능적으로 유리합니다.

 

<swift />
if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword { print("Welcome!") } else { print("ACCESS DENIED") } // Prints "Welcome!"

 

 

내용은 https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html를 보면서 작성하였고 원문으로 작성된 내용을 옮기다 보니 이상한 부분이 있을 수 있습니다. 자세한 내용은 위의 링크를 확인해주시기 바랍니다.

 

 

반응형
profile

소소한개발팁

@개발자 뱅

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!