Klausa Penjaga
Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 68 dari 78.
Ketika sebuah fungsi memerlukan beberapa pemeriksaan, menumpuk satu if di dalam if lainnya membuat bagian utama kode semakin dalam:
func buy(gold: int, price: int) -> String:
if price > 0:
if gold >= price:
return "Bought! %d gold left" % (gold - price)
else:
return "Not enough gold"
else:
return "Invalid price"Guard clause membalikkan keadaan ini. Guard clause memeriksa satu kasus yang tidak valid di bagian atas fungsi dan langsung keluar dengan return. Kode setelah pemeriksaan guard hanya berjalan dengan nilai yang valid, dan tidak memerlukan penyarangan:
func buy(gold: int, price: int) -> String:
if price <= 0:
return "Invalid price"
if gold < price:
return "Not enough gold"
return "Bought! %d gold left" % (gold - price)buy(50, 30) mengembalikan Bought! 20 gold left, buy(10, 30) mengembalikan Not enough gold, dan buy(50, 0) mengembalikan Invalid price.
Urutan penjaga itu penting: penjaga yang melindungi sebuah baris harus berada sebelumnya. Periksa teks dengan is_valid_int() sebelum kamu menggunakan angkanya, dan periksa apakah nilainya nol sebelum kamu membagi:
func share(coins: int, players: int) -> int:
if players <= 0:
return 0
return coins / playersDalam fungsi -> void, guard adalah return yang berdiri sendiri. Di dalam perulangan, continue berfungsi sebagai guard untuk satu elemen: perintah ini melewati elemen yang tidak valid, lalu perulangan berlanjut ke elemen berikutnya.
Tantangan
MudahTulis fungsi process_data. Fungsi ini menerima string text dan mengembalikan string:
- Jika
textbukan bilangan bulat, kembalikanInput must be a number! - Jika angkanya
0, kembalikanCannot divide by zero! - Jika tidak, bagi
100.0dengan angka tersebut dan kembalikan hasilnya dengan dua angka desimal
Contohnya, process_data("8") mengembalikan 12.50, process_data("-5") mengembalikan -20.00, dan process_data("abc") mengembalikan Input must be a number!.
Tulis kedua pemeriksaan sebagai klausa guard di bagian atas fungsi.
Coba sendiri
func process_data(text: String):
# Tulis kodemu di sini
pass
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Method untuk StringMencari dalam StringMengganti dan Menghapus SpasiMemisahkan dan MenggabungkanUlasan: Memeriksa Nama Pengguna4Dictionary Bagian 2
Dictionary BersarangArray berisi DictionaryMenggabungkan DictionaryMenyalin DictionaryRangkuman: Penghitung Frekuensi10Fungsi Lanjutan
Mengembalikan Beberapa NilaiFungsi Lambda Bagian 1Fungsi Lambda Bagian 2Ringkasan: Mengurutkan dengan LambdaFungsi Rekursif Bagian 1Fungsi Rekursif Bagian 2Ringkasan: Menjumlahkan array Bersarang13Sistem Manajemen Inventaris
Ikhtisar ProyekTambahkan Barang2Pengambilan Keputusan Lanjutan
Pencocokan dengan VariabelGuard pada MatchPola arrayPola dictionaryPemeriksaan KeanggotaanUlasan: Parser Perintah5Aplikasi Buku Kontak
Tampilkan MenuTambah Kontak8Pengelola Data Siswa
Gambaran Umum ProyekTambah Siswa11Fungsi Tingkat Tinggi
Method mapMethod filterMethod reduceany dan allUlasan: Validator EmailUlasan: Pemroses Angka3Array Multidimensi
Dasar-Dasar Array 2DMengakses Elemen Array 2DNested Loop dengan Array 2DRangkuman: Array 2DArray Tidak BeraturanPola Umum Array 2DRangkuman: Papan Permainan6Set dengan Dictionary
Apa Itu Set?Dictionary sebagai SetMenambahkan dan MenghapusUnion dan IntersectionSelisih SetRangkuman: Menghapus Duplikat9Agregasi Data Lanjutan
Menjumlahkan NilaiMencari Nilai Minimum dan MaksimumPengurutan KustomUlasan: Pengurut dictionary12Penanganan Error Dasar
Apa Itu Penanganan Error?Memvalidasi InputKlausa PenjagaMengembalikan Kode ErrorRingkasan: Pembagian AmanLatihan sendiri: Compiler GDScript online