if let 문 내 쉼표(,) 를 통한 다중 옵셔널 바인딩

if let 문 내 쉼표(,) 를 통한 다중 옵셔널 바인딩

if let choice = readLine(), let choiceInt = Int(choice) {
                switch choiceInt {
                case 1:
                    print("게임을 시작합니다.")
                    GameStart()
                    break
                case 2:
                    print("<게임 기록 보기>")
                    GameRecords()
                    break
                case 3:
                    print("숫자 야구 게임을 종료합니다.")
                    GameEnd()
                    break
                default:
                    print("잘못된 입력입니다. 1, 2, 3 중에서 선택해주세요.")
                }
            } else {
                print("입력이 잘못되었습니다.")

 

게임을 시작하기 전에 선택 항목을 받아 각자 다른 클래스를 실행시키는 식을 만들었다.

일단 각자의 식을 실행하려면 각기 다른 입력값을 받아 진행해야 하기 때문에 조건식을 이렇게 작성해봤다.

readLine() 은 이용자에게 입력값을 받는 것으로 아무것도 입력받지 않을 수 있기 떄문에 String? 으로 값을 받게 된다.

하지만 나는 switch문을 사용하여 Int 타입으로 각각의 case 를 지정하고 싶었기 때문에 입력 받은 옵셔널 String 값을 바인딩한 후 Int 타입으로 다시 변환하는 과정이 필요 했다.

 

if let choice = readLine(), let choiceInt = Int(choice)

 

이 방식은 if let 구문에서 쉼표(,) 는 여러개 옵셔널 바인딩을 동시에 수행할 수 있다.

이 점을 바탕으로 readLine() 에서 받은 String? 을 choice 에 바인딩 한 후 이 값을 Int(choice) 에 받아 다시 choiceInt 에 담는 과정을 통해 받은 String? 값을 Int 로 반환한다.