Menu
Coddy logo textTech

Проверка с помощью Require

Часть раздела Логика и управление потоком путешествия по Kotlin на Coddy. Урок 54 из 63.

require(condition) проверяет контракт аргумента функции. Если условие равно false, возникает исключение IllegalArgumentException. Замыкающее лямбда-выражение может предоставить сообщение об ошибке. Перехват этой ожидаемой ошибки в вызывающем коде позволяет преобразовать недопустимый ввод в определённый результат.

fun ticketCost(count: Int): Int {
    require(count >= 0) { "count must be nonnegative" }
    return count * 5
}

Внутри main:

try {
    println(ticketCost(-2))
} catch (error: IllegalArgumentException) {
    println("invalid")
}

Невыполненное требование к аргументу вызывает исключение до вычисления стоимости.

require выбрасывает IllegalArgumentException, когда его условие равно false.

challenge icon

Задание

Средне

Завершите validatedCost с параметром count: Int. Используйте предоставленный вспомогательный код для вычисления стоимости, который требует неотрицательного значения count. В случае успеха верните стоимость в виде строки, а если выброшено исключение IllegalArgumentException, верните invalid. Значение count находится в диапазоне от -1000 до 1000.

Если выше не указаны более строгие ограничения, коллекции содержат не более 100 элементов на каждом уровне, а целочисленные аргументы и целочисленные значения коллекций находятся в диапазоне от -1000 до 1000. Текст, предоставленный для разбора, может содержать недопустимые представления или представления, значения которых выходят за допустимый диапазон, как описано.

Верните значение типа String. Сохраните предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его количества элементов, за которым следуют сами элементы, а map начинается с количества записей, за которым следуют каждые ключ и значение. Вложенные списки повторяют формат количества и элементов для каждой строки. Предоставленный main выводит возвращаемое значение, за которым следует один перевод строки. Списки используют стандартный формат Kotlin со скобками; не выводите дополнительные метки.

Попробуйте сами

fun cost(count: Int): Int {
    require(count >= 0) { "count must be nonnegative" }
    return count * 5
}
fun validatedCost(count: Int): String {
    // Напишите ваше решение здесь.
    return ""
}
fun main() {
    val count = readln().toInt()
    println(validatedCost(count))
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Песочница Kotlin