선택사항
이다. 문 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