100 Days of Swift - Day 3: Operators and Conditions

100 Days of Swift - Day 3: Operators and Conditions

Arithmetic Operators, Operator Overloading, Compound Assignment Operators, Comparison Operators, Conditions, Ternary Operators, Switch Statements and Range Operators

일단 작심 삼일은 다행히 넘겼는데… 슬슬 고비가 오고 있다. 맨날 앗차차 하면서 하는 중…

Arithmetic Operators

let firstScore = 12
let secondScore = 4

// operators : +, -, *, /, % 
let total = firstScore + secondScore
let difference = firstScore - secondScore
let product = firstScore * secondScore
let divided = firstScore / secondScore
let remainder = 13 % secondScore // remainders!

Operator Overloading

  • swift는 operator overloading을 지원
  • operator overloading : 연산자가 하는 일이 피연산자에 따라 달라진다는 뜻!
  • 주의: swift는 type safe language이기 때문에 동일한 type에 대해서만 사용해야함!
let meaningOfLife = 42
let doubleMeaning = 42 + 42 // 84

let fakers = "Fakers gonna "
let action = fakers + "fake" // "Fakers gonna fake"

let firstHalf = ["John", "Paul"]
let secondHalf = ["George", "Ringo"]
let beatles = firstHalf + secondHalf // ["John", "Paul", "George", "Ringo"]

Compound Operators

  • swift는 operator와 assignment가 합해진 shorthand operators를 가지고 있음. 따라서 즉석에서(in place) 변수의 값을 바꿀 수 있다!
var score = 95
score -= 5 // Assign the result back to the variable 'score'!
var quote = "The rain in Spain falls mainly on the "
quote += "Spaniards"

Comparison Operators

  • swift는 여러 개의 comparison opeartors를 가지고 있는데, 수학과는 작동 방식이 좀 다를 수 있음.
  • == : equals
  • != : not equals
  • String 역시 comparison operator를 사용 가능 한데, 이 경우에는 natural alphabetical order를 사용한다.
let firstScore = 6
let secondScore = 4

firstScore == secondScore // false
firstScore != secondScore // true
firstScore < secondScore // false
firstScore >= secondScore // true

// String에서 역시 comparison opeartor 사용 가능
"Taylor" <= "Swift"

Conditions

  • Operator와 if statement를 이용해서 condition 을 만들 수 있음!
  • condition을 이용해서 조건이 참일때만 코드를 수행하도록 만들 수 있음.
let firstCard = 11
let secondCard = 10

if firstCard + secondCard == 2 {
    print("Aces – lucky!")
} else if firstCard + secondCard == 21 {
    print("Blackjack!")
} else {
    print("Regular cards")
}

Comining Conditions

  • && (and) 와 || (or) : 여러 개의 condition을 합치는 데 사용
  • &&|| 는 한 condition에서 여러 개 사용할 수 있음. 대신 너무 복잡하게 작성하지는 말자!
let age1 = 12
let age2 = 21

// 사실 age2 > 18 은 확인하지도 않음. 이미 age1 > 18이 false이기 때문!
if age1 > 18 && age2 > 18 {
    print("Both are over 18")
}

if age1 > 18 || age2 > 18 {
    print("At least one is over 18")
}

The Ternary Operators

  • 한 번에 세 개의 값에 대해서 작동! 그렇기 때문에 ternary operator라고 불린다.
  • 첫 번째 값은 condition을 명시하고, 참일 경우 두 번째 값이, 거짓일 경우 세 번째 값이 리턴된다.
let firstCard = 11
let secondCard = 10
print(firstCard == secondCard ? "Cards are the same" : "Cards are different") // "Cards are different"

// 아래의 코드와 동일한 기능
if firstCard == secondCard {
    print("Cards are the same")
} else {
    print("Cards are different")
}

Swift statements

  • if와 else if 로 이어지는 조건이 매우 많다면 그 대신 swiftch case 라고 하는 construct를 사용하는 것이 낫다. 더 명확하기 때문!
  • switch를 이용하면 condition을 한 번만 작성하고 가능한 모든 결과를 늘어놓은 후 어떻게 할 지 결정한다.
  • switch의 경우 가능한 모든 케이스를 커버해야하기 때문에 default를 사용한다.
  • swift는 각 case 안의 코드만 실행하기 때문에 다음 case로 진행하고 싶다면 fallthrough 키워드를 이용해야 한다.
switch weather {
case "rain":
    print("Bring an umbrella")
case "snow":
    print("Wrap up warm")
case "sunny":
    print("Wear sunscreen")
    fallthrough
default:
    print("Enjoy your day!")
}

Range Operators

  • Swift에는 range를 만들 수 있는 operator가 두 개 있음. ..<...!
  • ..<(half-open range operator) : 마지막 값을 제외
  • ...<(close-open range operator) : 마지막 값을 포함
let score = 85

switch score {
case 0..<50: // 0, 1, 2, ..., 48, 49
    print("You failed badly.")
case 50...85: // 50, 51, ..., 84, 85
    print("You did OK.")
default:
    print("You did great!")
}

Operators and Conditions Summary

  • Swift에는 arithmetic/comparion operator가 있고, 예상 가능한 방식으로 작동한다.
  • arithmetic operator의 compound variant는 변수의 값을 그 자리에서 수정할 수 있다. +=, -= 처럼 이용.
  • if, else, else if 를 이용해 condition의 결과에 따라 실행할 코드를 정할 수 있다.
  • swift에는 condition이 참과 거짓일 경우를 한 번에 포함한 ternary operator가 있다. 단 많이 사용하는 것은 추천하지 않음.
  • 동일한 값을 이용하는 여러 condition이 있다면 switch를 사용하는 것이 더 명확하다.
  • ..<을 이용하거나 ...을 이용해서 범위에서 마지막 값을 포함시키거나 뺄 지 정할 수 있다.

강의 주소


© 2021 Subeen Park. All rights reserved.