Menu
Coddy logo textTech

Validando com Require

Parte da seção Lógica e Fluxo do Journey de Kotlin da Coddy. Lição 54 de 63.

require(condition) verifica um contrato de argumento de uma função. Se a condição for false, ele lança IllegalArgumentException. Uma lambda final pode fornecer uma mensagem de erro. Capturar esse erro esperado no chamador permite transformar uma entrada inválida em um resultado definido.

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

Dentro de main:

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

O requisito de argumento não atendido lança uma exceção antes que o custo seja calculado.

require lança IllegalArgumentException quando sua condição é false.

challenge icon

Desafio

Médio

Complete validatedCost com o parâmetro count: Int. Use o auxiliar de custo fornecido, que exige uma contagem não negativa. Retorne o custo como uma string em caso de sucesso, ou invalid se IllegalArgumentException for lançado. count está entre -1000 e 1000.

A menos que limites mais rigorosos sejam definidos acima, as coleções contêm no máximo 100 elementos em cada nível, e os argumentos inteiros e os valores inteiros das coleções estão entre -1000 e 1000. O texto fornecido para análise pode incluir representações inválidas ou fora do intervalo, conforme descrito.

Retorne um valor do tipo String. Mantenha o código de entrada/saída fornecido. Ele lê argumentos escalares, um por linha; uma lista começa com sua contagem seguida de seus elementos, e um mapa começa com a contagem de suas entradas seguida de cada chave e valor. Listas aninhadas repetem o formato de contagem e elementos para cada linha. O main fornecido imprime o valor retornado seguido por uma nova linha. As listas usam o formato padrão entre colchetes do Kotlin; não imprima rótulos adicionais.

Experimente você mesmo

fun cost(count: Int): Int {
    require(count >= 0) { "count must be nonnegative" }
    return count * 5
}
fun validatedCost(count: Int): String {
    // Escreva sua solução aqui.
    return ""
}
fun main() {
    val count = readln().toInt()
    println(validatedCost(count))
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Playground de Kotlin