Swift(7) Optionals

개발렬·2023년 7월 7일
0

Swift

목록 보기
7/23
post-thumbnail

Optionals

옵셔널은 변수 또는 상수의 값이 실제로 존재하는지 여부를 명시적으로 표현할 수 있게 해줍니다. 값이 존재하지 않는 경우에는 옵셔널이 nil 값을 가집니다.

let stock //추론되는 타입이 없습니다. 에러가 생깁니다.

let stock: Int
print(stock)
//에러 생깁니다. 변수나 상수는 값을 읽기전에 초기화를 해야합니다.
let str: String = "Swift"

let optionalStr: String? = nil
let optionalStr: Optional<String> = nil
//위의 코드는 값을 표현하는 표현식입니다.

Unwrapping

옵셔널 값은 연관 값으로 저장되어 있기 때문에 값에 접근하려면 값을 추출해야 합니다. 이를 옵셔널 언래핑(Optional Unwrapping)이라고 합니다.

일반적으로, 옵셔널은 값이 존재하지 않을 수도 있는 경우에 사용됩니다. 이때 연관 값은 값이 없는 상태를 설명하는 추가 정보를 제공합니다.

예를 들어, Optional 타입은 Int 값을 감싸고 있는 옵셔널 타입입니다. 이 경우, 연관 값으로는 Int 타입의 값이나 nil이 저장될 수 있습니다. 즉, 옵셔널은 값이 있을 경우 해당 값을 저장하고, 값이 없을 경우 nil을 저장합니다.

옵셔널과 연관 값은 Swift에서 안전한 코드 작성과 예외 상황 처리를 위해 사용되는 중요한 개념입니다. 연관 값은 값을 보다 풍부하게 설명하고 제어하는 데 도움을 주는 역할을 합니다.

Optional Binding

if let unwrappedValue = optionalValue {
    // 추출한 값(unwrappedValue)을 사용하여 작업을 수행합니다.
}

guard let unwrappedValue = optionalValue else { return }
  // 추출한 값(unwrappedValue)을 사용하여 작업을 수행합니다.

Implicitly Unwrapped Optionals

사용 시 자동으로 추출되는 특별한 종류의 옵셔널입니다. 암시적 추출 옵셔널은 일반적인 옵셔널과는 다른 특성을 가지고 있습니다.

암시적 추출 옵셔널은 옵셔널 타입의 값이 필요한 곳에서 직접적인 언래핑 없이 자동으로 값에 접근할 수 있도록 도와줍니다. 이는 사용자가 옵셔널 값을 일일이 추출하거나 언래핑하는 번거로움을 줄여줍니다.

Type!
let num: Int! = 123
let a = num //형식 추론
a //Int? 형식 추론을 사용되면 추출되지 않습니다.

let b: Int = num
b //Int
let num: Int! = nil

let b: Int = num
b //에러, 값이 nil이지만 추출하기 때문에 에러가 생깁니다. 강제 추출이랑 똑같은 문제가 생깁니다.

Nil-Coalescing Operator

옵셔널 값이 nil인 경우에 대체 값을 제공하는 데 사용되는 연산자입니다. 이 연산자는 옵셔널 값이 nil인지 확인하고, nil인 경우 대체 값을 반환합니다.

Optional_Expr ?? Expr

값이 있으면 왼쪽 값 없으면 오른쪽 값을 기본값으로 사용합니다.

profile
Flutter, iOS...나는 모바일 앱 개발자

0개의 댓글