연산자를 이용해서 스위프트의 모든 기본 타입들을 결합할 수 있다.
연산자들은 + 와 – 같은 작은 수학적 기호이고 스위프트는 넓은 범위를 갖고 있다.
let firstScore = 12
let secondScore = 4
let total = firstScore + secondScore
let difference = firstScore – secondScore
let product = firstScore * secondScore
let divided = firstScore / secondScore
Swift에는 나눗셈 후에 나머지를 계산하는 특수 연산자 ‘%’가 있다.
이것은 한 숫자가 얼마나 들어갈 수 있는지 계산한 다음 나머지를 돌려준다.
let remainder = 13 % secondScore
Swift는 나누기 이후 남은 것들을 계산할 수 있는 연산자를 갖고 있다.
이것은 ‘modulo’라고 불리기도 하지만 정말 구체적으로는 완전히 같지는 않다.
특별한 이벤트까지 465일이 남았다고 한다면, 이 값을 사용자에게 어떻게 유용한 방법으로 보여줄 것인가?
let weeks = 465 / 7
print(“There are \(weeks) weeks until the events.”)
let weeks : Double = 465 / 7
print(“There are \(weeks) weeks until the event.”)
따라서 나머지 연산자가 필요하다.
let weeks = 465 / 7
let days = 465 % 7
print(“There are \(weeks) weeks and \(days) days until the event.”)
let number = 465
let isMultiple = number.isMultiple(of:7)
Swift는 연산자 오버로딩을 지원한다.
이것은 연산자가 하는 일이 네가 사용하는 값에 따라 달라진다는 멋진 표현이다.
예를 들어, + 는 다음과 같이 정수를 더한다
let meaningOfLife = 42
let doubleMeaning = 42 + 42
let fakers = “Fakers gonna”
let action = fakers + “fake”
let firstHalf = [“John”, “Paul”]
let secondHalf = “George”, “Ringo”]
let beatles = firstHalf + secondHalf
추가로, Swift는 타입-안전 언어이기에 타입들을 섞을 수 없다.
예를 들어, 정수와 문자열을 더할 수 없다.
Swift는 하나의 연산자와 할당을 결합하는 shorthand operator(속기 연산자)를 가지기 때문에 변수를 변경할 수 있다.
기존 연산자 -, +, *, / 처럼 보이지만 변수에 결과값을 할당하기 때문에 끝에 = 를 갖고 있다.
var score = 95
score -= 5
var quote = “The rain in Spain falls mainly on the”
quote += “Spaniards”
Swift는 비교를 수행하는 여러 연산자를 갖고 있고 수학에서와 유사하게 작동한다.
let firstScore = 6
let secondScore = 4
값이 같은지를 확인하는 두 가지 연산자가 있다 : ‘==’는 두 가지 값이 같은지 확인하고, ‘!=’는 두 가지 값이 같지 않은지 확인한다.
firstScore == secondScore
firstScore != secondScore
firstScore < secondScore
firstScore >= secondScore
“Taylor” <= “Swift”
몇 가지 연산자들을 알게 되었으므로 if문을 사용하여 조건을 작성할 수 있다.
Swift에 조건을 주고, 그 조건이 참이라면 해당 코드를 실행할 것이다.
이것을 시행하기 위해, print() 함수를 사용한다. 텍스트와 함께 실행하면 이 함수는 출력할 것이다.
let firstCard = 11
let secondCard = 10
if firstCard + secondCard == 21 {
print(“Blackjack!”)
}
괄호 안의 코드는 조건이 참일 때만 실행될 것이다.
if firstCard + secondCard == 21 {
print(“Blackjack!”)
} else {
print(“Regular cards”)
}
if firstCard + secondCard == 2 {
print(“Aces = lucky!”)
} else if firstCard + secondCare == 21 {
print(“Blackjack!”)
} else {
print(“Regular cards”)
}
Swift는 조건들을 결합하는 두 가지 특별한 연산자를 갖고 있다.
&&(‘and’로 읽음)과 ||(‘or’로 읽음)이다.
let age1 = 12
let age2 = 21
if age1 > 18 && age2 > 18 {
print(“Both are over 18”)
}
print()는 둘 다 18살보다 많을 때만 행하질 것이다.
사실, Swift는 age2의 값을 확인도 하지 않을 것이다 왜냐하면 age1이 이미 거짓이기 때문이다.
&&의 대안은 ||이다.
이것은 둘 중에 하나만 테스트를 통과해도 참으로 평가한다.
If age1 > 18 || age2 > 18 {
print(“At least one is over 18”)
}
한 조건에서 && 와 || 를 한번 이상 사용할 수 있지만
너무 복잡하게 만들면 읽기 힘들어 지기에 좋지 않다.
Swift에서 삼항 연산자는 거의 사용되지 않는다.
이것은 한번에 세 가지 값을 다룰 때 사용되기 떄문에 삼항 연산자 이다.
삼항 연산자는 첫번째 값의 조건을 확인하고
만약 이것이 참이라면 두 번째 값을 반환하고
거짓이라면 세 번째 값을 반환한다.
삼항 연산자는 물음표와 콜론으로 나누어진 조건과 참 또는 거짓 블록이 하나로 합쳐진 것이고 읽기 꽤 어렵다.
let firstCard = 11
let secondCard = 10
print(firstCard == secondCard ? “Cards are the same” : “Cards are different”)
if firstCard == secondCard {
print(“Cards are the same”)
} else {
print(“Cards are different”)
}
만약 if 와 else if 를 사용하는 조건 여러 개를 가지고 있다면
switch 문으로 알려진 다른 구조를 사용하는 것이 더 명확하다.
이 접근 방식을 사용하면 너는 조건을 한 번 작성한 다음 가능한 모든 결과와 각각에 대해 어떤 일이 발생해야 하는지 나열한다.
let weather = “sunny”
Switch weather {
case “rain”:
print(“Bring an umbrella”)
case “snow”:
print(“Wrap up warm”)
case “sunny”
print(“Wear sunscreen”)
default:
print(“Enjoy your day!”)
}
Swift는 네가 가능한 모든 케이스를 포함하여 결과를 놓치는 일이 없도록 하기 위해서 마지막에 default를 요구한다.
만약 날씨가 비, 눈, 해 모두 아니라면 default 케이스가 실행될 것이다.
스위프트는 각 케이스 안의 코드만 실행한다.
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!”)
}
Swift 는 범위를 표현하는 두 가지 방법을 제공한다.
‘..<’ 와 ‘…’ 연산자 이다.
예를 들어, 1..<5범위는 1,2,3,4를 포함하지만 1…5는 1,2,3,4,5를 포함한다.
범위는 Switch블럭에서 유용하다 왜냐하면 너는 각각의 케이스에 이것을 사용할 수 있기 때문이다.
let score = 85
switch score {
case 0..<50 :
print(“You failed badly.”)
case 50..<85 :
print(“You did OK.”)
default:
print(“You did great!”)
}
이전과 같이, default 케이스는 모든 가능한 값이 포함되는 것을 보장하기 위해 무조건 있어야한다.