Convalidare con require
Fa parte della sezione Logica e flusso del percorso Kotlin di Coddy. Lezione 54 di 63.
require(condition) verifica un contratto dell’argomento di una funzione. Se la condizione è false, lancia IllegalArgumentException. Una lambda finale può fornire un messaggio di errore. Intercettare quell’errore previsto nel chiamante ti permette di tradurre un input non valido in un risultato definito.
fun ticketCost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}All'interno di main:
try {
println(ticketCost(-2))
} catch (error: IllegalArgumentException) {
println("invalid")
}Il requisito sull'argomento non soddisfatto genera un'eccezione prima che venga calcolato il costo.
require genera IllegalArgumentException quando la sua condizione è false.
Sfida
MedioCompleta validatedCost con il parametro count: Int. Usa l'helper cost fornito, che richiede un conteggio non negativo. Restituisci il costo come stringa in caso di successo, oppure invalid se viene lanciata IllegalArgumentException. count è compreso tra -1000 e 1000.
Salvo indicazioni più restrittive riportate sopra, le raccolte contengono al massimo 100 elementi a ciascun livello e gli argomenti interi e i valori interi nelle raccolte sono compresi tra -1000 e 1000. Il testo fornito per l'analisi può includere rappresentazioni non valide o fuori intervallo, come descritto.
Restituisci un valore di tipo String. Mantieni il codice di input/output fornito. Legge gli argomenti scalari uno per riga; un elenco inizia con il suo conteggio seguito dai suoi elementi, e una mappa inizia con il conteggio delle voci seguito da ciascuna chiave e valore. Gli elenchi annidati ripetono il formato conteggio-elementi per ogni riga. Il main fornito stampa il valore restituito seguito da un carattere di nuova riga. Gli elenchi usano il formato standard tra parentesi quadre di Kotlin; non stampare etichette aggiuntive.
Provalo tu
fun cost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}
fun validatedCost(count: Int): String {
// Scrivi qui la tua soluzione.
return ""
}
fun main() {
val count = readln().toInt()
println(validatedCost(count))
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Mappe Parte 1
Creare mappeConsultare le mappe in modo sicuroAggiornare le mappeControllare le chiaviRiepilogo - Banco di borsa4Collezioni annidate
Liste di listeAttraversare le righeRiepiloghi delle righeAppiattire liste annidateRipasso - File di posti a sedere7Pipeline di collezioni
Trasformare con MapFiltrare i valoriVerificare le regole della collezioneAccumulare con FoldRiepilogo - Totali approvati2Mappe Parte 2
Iterare sulle voci delle mappeChiavi e valoriMappe di frequenzaMappe annidateRiepilogo - Report delle frequenze5Progetto - Rubrica
Salva contattiTrova contatti8Ordinare e raggruppare
Ordinare in base a una chiaveCombinare i confrontiRaggruppare i valoriAssociare in base a una chiaveRiepilogo - Classifica per lunghezza11Gestione degli errori
Parsing senza eccezioniGestire errori specificiTry come espressioneConvalidare con requireRiepilogo - Quantità validate3Insiemi e appartenenza
Creare insiemiAggiornare gli insiemiOperazioni sugli insiemiVerificare i sottoinsiemiRiepilogo - Ospiti dell'evento6Valori delle funzioni
Scrivere funzioni lambdaTipi di funzionePassare funzioniVariabili catturateRiepilogo - Punteggio configurabileEsercitati da solo: Playground Kotlin