Kotlin 문법 심화 - 4일차

두주·2023년 12월 14일
0

TIL

목록 보기
15/58

큰 문제가 있다

            val selectNumber = readlnOrNull()?.toInt()
            when (selectNumber) {
                1 -> {
                    MenuBurger().displayMenu()
                    val burgerSelect = readlnOrNull()?.toInt()
                    when (burgerSelect) {
                        1 -> AddCart().addCart(burgerSelect)
                        2 -> AddCart().addCart(burgerSelect)
                        3 -> AddCart().addCart(burgerSelect)
                        4 -> AddCart().addCart(burgerSelect)
                        5 -> AddCart().addCart(burgerSelect)
                        0 -> {
                            println("뒤로 가기")
                            return main()
                        }
                        else -> println("메뉴를 확인하신 뒤 숫자를 다시 입력해 주세요.")
                    }
                }

                2 -> {
                    MenuFrozenCustard().displayMenu()
                    val frozenCustardSelect = readlnOrNull()?.toInt()
                    when (frozenCustardSelect) {
                        1 -> AddCart().addCart(frozenCustardSelect)
                        2 -> AddCart().addCart(frozenCustardSelect)
                        3 -> AddCart().addCart(frozenCustardSelect)
                        4 -> AddCart().addCart(frozenCustardSelect)
                        5 -> AddCart().addCart(frozenCustardSelect)
                        0 -> {
                            println("뒤로 가기")
                            return main()
                        }
                        else -> println("메뉴를 확인하신 뒤 숫자를 다시 입력해 주세요.")
                    }
                }

내 메인 중 일부인데,
원하는 버거를 선택해서 장바구니로 옮기는 과정이다.

버거의 종류가 10만개라고 가정하면
when문으로 10만줄을 쓸 수는 없다.

일단 이걸 대체할 수 있는 방법이 있는가? 가 첫 번째 문제다.

두 번째 문제는, 유저가 음식 메뉴를 선택해서 장바구니로 옮기는데
만약 addCart(burgerSelect), addCart(frozenCustardSelect)로 구분하지 않는다면

유저가 어디서 1을 쳤는지 모른다.

즉, Drinks에서 1번 (탄산음료)를 선택했는지
Burger에서 1번 (햄버거)를 선택했는지 1의 값만 받아오면 모른다.

그래서 burgerSelect와 frozenCustardSelect로 받아온 건데.

결국 이러면 burgerSelect에서 들어온 1을 처리하는 클래스와
forzenCustardSelect에서 들어온 1을 처리하는 클래스를 만들어야 한다.

어차피 다 똑같은 내용이 출력될 텐데.

아 진짜 머리아프다 ㅠ_ㅠ

오늘 하루종일 이거 붙잡고 해결 방법을 찾는다고 계속 했는데

어제와 아무런 변경점이 없다. 결국 원점으로 돌아왔으니까.

어쩜좋아 나.

profile
야옹.

0개의 댓글