Почему не инициализируется переменная?

Повторяю урок из видеокурса и столкнулся с проблемой, не инициализируется переменная shop. Хотя выше ей должен быть присвоен один из 2 объектов, в зависимости от того что выберет пользователь, в видеоуроке код компилируется без проблем хотя сделано все так же. В чем проблема?

скрин

код:

fun main(){
val moscowCoffeShop = MoscowCoffeShop(100,120,90)
val saintPiCoffeShop = SaintPiCoffeShop(110,130,100)
val shop: CoffeShop

println("Здравствуйте, пожалуйста выберите город:")
println("1. Москва\n2. Санкт-Петербург")

when (readln()) {
    "1" -> shop = moscowCoffeShop
    "2" -> shop = saintPiCoffeShop
    else -> println("Error")
}

println("пожалуйста выберите напиток:")
println("1. Американо\n2. Капучино\n 3. Латте")

when (readln()){
    "1"-> shop.makeAmericano()
    "2"-> shop.makeCappucino()
    "3"-> shop.makeLatte()
    else -> println("Error")
   }
}

Ответы (2 шт):

Автор решения: Bastard_Ape

Сделал так

   shop = when (readln()) {
        "1" ->  moscowCoffeShop
        "2" ->  saintPiCoffeShop
        else -> return 
    }

компилятор не ругается теперь

→ Ссылка
Автор решения: insolor

Если в первом when при неправильном вводе просто выводить ошибку, но не прерывать программу, то дальше у вас переменная shop окажется неинициализированной. Нужно добавить прерывание работы функции с помощью return:

when (readln()) {
    "1" -> shop = moscowCoffeShop
    "2" -> shop = saintPiCoffeShop
    else -> {
        println("Error")
        return
    }
}
→ Ссылка