Menu
CoddyTech

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 / players

Dalam 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.

challenge icon

Tantangan

Mudah

Tulis fungsi process_data. Fungsi ini menerima string text dan mengembalikan string:

  1. Jika text bukan bilangan bulat, kembalikan Input must be a number!
  2. Jika angkanya 0, kembalikan Cannot divide by zero!
  3. Jika tidak, bagi 100.0 dengan 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
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online