Как сделать возврат данных только при определенном условии?
Возник вопрос, есть ли возможность вернуть данные из функции только при определенном условии, т. е.:
fun foo(): Int {
if (условие верно) {
вернуть число
}
здесь я не хочу возвращать, т. к. не получаю то, что возвращаю сверху
}
Ответы (1 шт):
Автор решения: Vadik
→ Ссылка
Вы пишете, что ничего не хотите возвращать, давайте рассмотрим варианты, как это можно сделать:
Сделать так, чтобы программа зависла:
fun foo(): Int { if (условие) { return число } while(true) { // Никогда не выходим из цикла, программа зависает } }Сделать так, чтобы программа завершилась с ошибкой:
fun foo(): Int { if (условие) { return число } throw Error("Не знаю что вернуть, поэтому просто упаду") }Поменять тип на
Int?и все-таки вернуть, но пустоту (null):fun foo(): Int? { if (условие) { return число } return null }Частый кейс в программировании, если вы хотите сообщить потребителю функции
foo, что ее используют неправильно, то делайте так:fun foo(): Int { if (!условие) { throw IllegalStateException("Сейчас не то состояние, чтобы меня вызывать") } return число }То же самое, но более красиво, с помощью стандартной функции check:
fun foo(): Int { check(условие) { "Сейчас не то состояние, чтобы меня вызывать" } return число }