이번 챕터에서는 조금이나마 옵셔널에 대해 배우고 활용을 할 수 있었다.
예시:
struct CalculatorBrain {
var bmi: Float?
func getBMIValue() -> String {
let bmiTo1DecimalPlace = String(format: "%.1f, bmi)
return bmiTo1DecimalPlace
}
}
// 이러한 코드가 있다면, 일단 bmi는 옵셔널이 되어 있기 때문에, 함수 안에 있는 bmi 언래핑 처리가 필요할 수도 있다.
1.
struct CalculatorBrain {
var bmi: Float?
func getBMIValue() -> String {
if bmi != nil { // if else을 활용하여, 만약에 bmi가 nil이 아닐시
let bmiTo1DecimalPlace = String(format: "%.1f, bmi!) //!로 강제 해제
return bmiTo1DecimalPlace
} else { // nil일 시 아래 코드 실행
return = "0.0"
}
}
2.
struct CalculatorBrain {
var bmi: Float?
func getBMIValue() -> String {
if let safeBMI = bmi { //if let을 활용하여, bmi에 값이 있다면 safeBMI(Float)를 사용
let bmiTo1DecimalPlace = String(format: "%.1f, safeBMI) //언래핑이 필요 없이 safeBMI 사용
return bmiTo1DecimalPlace
} else { // nil일 시 아래 코드 실행
return = "0.0"
}
}
3.
struct CalculatorBrain {
var bmi: Float?
func getBMIValue() -> String {
// nil coalescing 활용, bmi에 값이 없다면 0.0으로 설정
let bmiTo1DecimalPlace = String(format: "%.1f, bmi ?? 0.0)
return bmiTo1DecimalPlace
}
}
이러한 방식으로 옵셔널을 활용했을 때, 언래핑을 하는 여러가지 방식을 배웠다.
아직은 옵셔널을 사용하는 것 조차 힘들지만, 앞으로의 챕터에서 더 활용해보면서 익히기로 하자.
끝!