1. 옵셔널이란
-값이 있을 수도, 없을 수도 있음을 표현
let optionalConstant: Int? = nil
let someConstant: Int = nil ------> 옵셔널이 아닌 상수에 nil 값을 할당하려고 하면 컴파일 오류 발생
-nil이 할당 될 수 있는지 없는지 표현
코드로보기
//someOptionalParm에 nil이 할당 될 수 있다.
func someFunction(someOptionalParam:Int?){ --->Int 타입 옵셔널 명시
//...
}
/// someOptionalParm에 nil이 할당 될 수 없다.
fumc someFunction(someOptionalParam:Int){ ---->옵셔널이 명시되어 있지 않은 Int 타입
//...
}
someFunction(someOptionalParam:nil)
//someFunction(someParam:nil) ---> 파라미터에 nill 값을 보낼 수 없음
2. 옵셔널을 쓰는 이유
- 명시적 표현
1. nil의 가능성을 코드만으로 표현가능
2. 문서/주석 작성 시간 절약
- 안전한 사용
1. 전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않고 사용가능
2. 예외 상황을 최소화 하는 안전한 코딩
3. 효율적 코딩
3. 옵셔널 문법과 선언
- 옵셔널 문법 = enum + generics
- 옵셔널 선언
enum Optional<Wrapped>:ExpressibleByNiliteral{
case none
case some(Wrapped)
}
let optionalValue : Optional<Int> = nil ------> 정석적인 옵셔널표현방법
let optionalValue : Int? = nil ------> 다른 방법, ?를 띄워쓰면 절대 안됨
-옵셔널 표현
1. 느낌표(!)를 이용한 암시적 추출 옵셔널
//Implicitly Unwrapped Optional
var implicitlyUnwrappedOptionalValue: Int! = 100
switch implicitlyUnwrappedOptionalValue{
case.none:
print("This Optional variable is nil")
case.some(let value):
print("Value is \(value)")
}
//기존 변수처럼 사용 가능
implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue +1
// nil 할당가능
implicitlyUnwrappedOptionalValue = nil
// 잘못된 접근으로 인한 런타임 오류 발생 (먼저 implicitlyUnwrappedOptionalValue에 nil값을 넣어주었기 때문)
// implicitlyUnwrappedOptionalValue = implicitlyUnwrappedOptionalValue +1
2. 물음표(?)를 이용한 옵셔널
//Optional
var optionalValue: Int? = 100
switch optionalValue{
case.none:
print("This Optional variable is nil")
case.some(let value):
print("Value is \(value)")
}
// nil할당가능
optionalValue = nil
// 기존 변수처럼 사용불가 - 옵셔널과 일반 값은 다른 타입으로 연산불가
// optionalValue = optionalValue +1
'Swift랑 친해지기 > Swift문법정리' 카테고리의 다른 글
13. 구조체 (0) | 2021.12.22 |
---|---|
12. 옵셔널 추출 (0) | 2021.12.22 |
10. 반복문 (0) | 2021.12.21 |
09. 조건문 (0) | 2021.12.21 |
08.함수고급 (0) | 2021.12.21 |