let name : Optional<String> = nil
// 축약형
let name : String? = nil
// 초기화 없을 시 nil로 자동 초기화
let name : String?
까지 줄어들 수 있다.
열거형
으로 구현이 되어있고, 제네릭
으로 선언이 되어있다. if name == nil {}
// enum 이기 때문에 다음도 가능하다.
if name == .none {} // name에 값이 없는 경우
if name == .some("Johnson") // name의 값이 Johnson인 경우
if case .some(let n) = name{
print(n)
}
줄이지 않고, enum인 점을 감안해서 사용하면 다음과 같이 쓸 수 있다.
if case let n? = name { print(n) }
switch
를 쓸수는 있는데, 조건이 1개더라도 default까지 설정해줘야해서 귀찮은 경우 때문에 if case
/ guard case
가 생기게 되었음func useWomenRestroom(gender: Gender){
if case .male = gender{
//
}
}
func useWomenRestroom(gender : Gender){
guard case .female = gender else {
//
}
}
enum Gender{
case male(age : Int) // 연관값
case female
}
func useMenRestroom(gender : Gender){
guard case let .male(age) = gender else{
print("out")
return
}
print(age)
}
let arrayOfOptionalInts : [Int?] = [nil, 2, 3, nil, 5]
var count = 0
for number in arrayOfOptionalInts{
count += 1
guard let number = number else{
print("nil")
return
}
}
var count = 0
for case let number? in arrayOfOptionalInts{
count += 1
print(number)
}