Return Не работает с метками
r@ print("Продолжить (y/n): ")
yesorno = readLine()!!
when (yesorno) {
"y" -> return main()
"n" -> return
else -> {
print("ERRRRRROOOOOOOOR#4734")
return@r
}
}
Не работает return@r (unresolved reference @r)
Ответы (1 шт):
Автор решения: Спицко Дмитрий
→ Ссылка
Вы не можете использовать так "метки", вы вообще ничего не можете использовать так. Просто скакнуть по коду вообще во всех высокоуровневых языках программирования считается жесточайшим моветоном. Даже если вы пишете на каком-нибудь паскале, где есть оператор goto, делающий то что попытались сделать вы, не используйте его. Никогда. Вообще. Оставьте это ассемблеру
return завершает блок кода. Это может быть метод, лямбда, цикл, может еще что-то специфичное. Пример:
observer.filter {
//do smth
return@filter true //показываем что тут возвращается результат лямбды, а не той функции, в которой она описана
}
lbl@ for(i in 0..w)
for(j in ){
//do smth
if(smth){
continue@lbl// переходим к следующей итерации внешнего цикла
}
}