선택사항이다. 문 statements을 둘러싼 중괄호는 필수사항이다.if / switch=뒤나 return뒤에 if 또는 switch를 작성할 수 있다.let scoreDecoration = if(teamScore > 10){
"🎉"
} else {
""
}
print("Score :", teamScore, scoreDecoration)
// Prints "Score: 11 🎉"
if와 let을 사용하여 누락될 수 있는 값에 대해 사용할 수 있다. 이러한 값은 옵셔널 optional로 표기된다.값을 포함하거나 값이 없음을 나타내는 nil을 포함한다.물음표 ?를 작성한다.var optionalString : String? = "Hello"
print(optionalString == nil)
// false
var optionalName : String? = "John Appleseed"
var greeting = "Hello!"
if(let name = optionalName){
greeting
}
if let : 값이 있는 경우와 값이 없는 경우(nil)를 체크한다.옵셔널로 할당된 값을 할당함으로서 옵셔널을 벗기는 작업을 한다.if let에서 선언한 let은 지역변수로서 해당 스코프{}를 벗어나지 못한다. var optionalValue : Int?;
optionalValue = 2
print(optionalValue)
// Optional(2)
if let value = optionalValue{
print(value)
} else {
print("값이 없음")
}
// 2
옵셔널값이 nil이면 조건은 false이고, 중괄호 안의 코드는 건너뛴다. nil이 아니면 옵셔널 값은 언래핑되고,let뒤의 상수로 할당되어 코드블럭 안에서 언래핑된 값으로 사용할 수 있다.??연산자를 사용하여 기본값을 제공하는 것이다. 옵셔널값이 없다면 기본값이 대신 사용된다.let nickname : String? = nil
let fullname : String = "John"
let informalGreeting = "Hi \(nickname ?? fullname)"
// Hi John
더 짧게 같은 이름으로 언래핑된 값을 사용할 수 잇다.
let nickname : String? = nil
if let nickname {
print("Hey, \(nickname)")
}
// 이경우에 아무것도 출력되지 않음
스위치 switch는 모든 종류의 데이터와 다양한 비교작업을 지원한다.스위치는 정수 및 동등성 비교로 제한되지 않는다.where는 switch 안에서의 조건 추가에 사용한다.case문을 실행하고 프로그램은 스위치 문을 종료한다. 다음 케이스로 이어서 실행되지 않기 때문에 각 케이스 코드에 명시적으로 스위치 종료를 할 필요가 없다. let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":
print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"):
print("Is it a spicy \(x)?")
default:
print("Everything tastes good in soup.")
}
// Prints "Is it a spicy red pepper?"
for-in을 사용하여 각 키-값쌍에 사용할 이름의 쌍을 제공하여 딕셔너리의 항목을 조회한다. 컬렉션 collection이므로 키와 값은 임의의 순서로 조회된다.let interestingNumbers = [
"prime" : [2,3,5,7,11,13],
"fibonacci" : [1,1,2,3,5,8],
"square" : [1,4,9,16,25],
]
var largest = 0
// 값만 사용
for( _, numbers) in interestingNumbers{
for number in numbers {
if number > largest {
largest = number
}
}
}
print(largest)
while을 사용해야한다. 대신 루프의 조건이 끝에 있을 수 있으므로 적어도 한번은 루프가 실행되도록 한다.repeat while 은 다른 언어의 do while과 같다.var n = 2
while n < 100 {
n *= 2
}
print(n)
var m = 2
repeat{
m *= 2
}while m < 100
print(m)
..<를 사용하고 포함하려면 ...를 사용한다. 0...4 는 0부터 4(이하)이다. var total = 0
for i in 0..<4{
total += i
}
print(total)
// 6
var total = 0
for i in 0...4{
total += i
}
print(total)
// 10