Swift

Swift) Enum: RawValue와 Optional 값 처리

Sonny Cucumber 2024. 1. 30. 11:28

The Swift Programming Language를 읽어보던 중

enum의 rawValue를 사용하면

 

왜 옵셔널 값으로 나오는지가

궁금해서 알아봤다

 

아래는 해당 코드

enum Rank: Int {
    case ace = 1
    case two, three, four, five, six, seven, eight, nine, ten
    case jack, queen, king

    func simpleDescription() -> String {
        switch self {
        case .ace:
            return "ace"
        case .jack:
            return "jack"
        case .queen:
            return "queen"
        case .king:
            return "king"
        default:
            return String(self.rawValue)
        }
    }
}

Print(Rank(rawValue: 3))

 

이 코드에서 프린트 문은

Optional(Rank.three)로 나오게 되는데

 

이는 rawValue가 enum의 케이스 중에서

일치하지 않는 경우가 있을 있기 때문에
optional로 찍히게 된다

 

if let convertedRank = Rank(rawValue: 3) {
    let threeDescription = convertedRank.simpleDescription()
    print(threeDescription)
}

따라서

if let을 사용해서 Optional 인지 체크해주고 

Enum의 펑션인

 

simpleDescription() 메소드를 써주면

3이 프린트로 찍힌다