Validasi dengan Require
Termasuk bagian Logika & Alur dalam perjalanan Kotlin di Coddy. Pelajaran 54 dari 63.
require(condition) memeriksa kontrak argumen fungsi. Jika kondisinya false, fungsi ini melempar IllegalArgumentException. Lambda di akhir dapat memberikan pesan error. Menangkap error yang diharapkan itu di pemanggil memungkinkan kamu mengubah input yang tidak valid menjadi hasil yang telah ditentukan.
fun ticketCost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}Di dalam main:
try {
println(ticketCost(-2))
} catch (error: IllegalArgumentException) {
println("invalid")
}Persyaratan argumen yang gagal akan melempar exception sebelum biaya dihitung.
require melempar IllegalArgumentException saat kondisinya false.
Tantangan
SedangLengkapi validatedCost dengan parameter count: Int. Gunakan helper cost yang disediakan, yang mengharuskan count bernilai nonnegatif. Kembalikan cost sebagai string jika berhasil, atau invalid jika IllegalArgumentException dilemparkan. count berada di antara -1000 dan 1000.
Kecuali batas yang lebih ketat dinyatakan di atas, koleksi berisi paling banyak 100 elemen di setiap tingkat, dan argumen integer serta nilai integer dalam koleksi berada di antara -1000 dan 1000. Teks yang diberikan untuk parsing dapat mencakup representasi yang tidak valid atau di luar rentang seperti yang dijelaskan.
Kembalikan nilai bertipe String. Pertahankan kode input/output yang disediakan. Kode tersebut membaca argumen skalar, satu per baris; list dimulai dengan jumlah elemennya, diikuti elemen-elemennya, dan map dimulai dengan jumlah entrinya, diikuti setiap key dan value. List bertingkat mengulangi format jumlah elemen dan elemen untuk setiap baris. main yang disediakan mencetak nilai yang dikembalikan, diikuti satu newline. List menggunakan format standar Kotlin dengan tanda kurung siku; jangan cetak label tambahan.
Coba sendiri
fun cost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}
fun validatedCost(count: Int): String {
// Tulis solusimu di sini.
return ""
}
fun main() {
val count = readln().toInt()
println(validatedCost(count))
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
4Koleksi Bersarang
List Berisi ListMenelusuri BarisRingkasan BarisMeratakan List BertingkatRangkuman, Baris Tempat Duduk7Alur Pemrosesan Koleksi
Transformasi dengan MapMemfilter NilaiMenguji Aturan KoleksiMengakumulasi dengan FoldRangkuman: Total yang Disetujui2Map Bagian 2
Menelusuri Entri MapKunci dan NilaiMap FrekuensiMap BersarangRingkasan: Laporan Frekuensi5Proyek: Buku Kontak
Menyimpan KontakMencari Kontak8Mengurutkan dan Mengelompokkan
Mengurutkan Berdasarkan KunciMenggabungkan PerbandinganMengelompokkan NilaiMengaitkan Berdasarkan KunciRangkuman: Papan Peringkat Berdasarkan Panjang11Penanganan Error
Parsing Tanpa PengecualianMenangani Error Tertentutry sebagai EkspresiValidasi dengan RequireRangkuman: Kuantitas yang DivalidasiLatihan sendiri: Playground Kotlin