Почему не инициализируется переменная?
Повторяю урок из видеокурса и столкнулся с проблемой, не инициализируется переменная 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
}
}
