Menu
CoddyTech

Nilai Enum

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 39 dari 78.

Setiap opsi enum adalah int, jadi kamu bisa membandingkan opsi dan menghitung dengannya:

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

func _ready():
	print(Day.FRIDAY) # 4
	print(Day.SATURDAY > Day.FRIDAY) # true
	print(Day.FRIDAY + 1) # 5

enum itu sendiri berfungsi seperti dictionary yang memetakan nama ke nilai. keys() mengembalikan nama secara berurutan, values() mengembalikan nilai, dan size() mengembalikan jumlah opsi:

print(Day.keys()) # ["MONDAY", "TUESDAY", ..., "SUNDAY"]
print(Day.size()) # 7

Untuk mencetak nama suatu nilai, gunakan nilai tersebut sebagai indeks pada keys(). Ini berfungsi jika pilihan menggunakan nilai default 0, 1, 2... Untuk enum dengan nilai yang dipilih, gunakan find_key(), yang mengembalikan nama suatu nilai:

var today := Day.SATURDAY
print(Day.keys()[today]) # SATURDAY

Dengan enum Coin { COPPER = 1, SILVER = 10 } di tingkat teratas, Coin.keys()[10] berada di luar rentang, sedangkan find_key() berfungsi:

print(Coin.find_key(10)) # SILVER

Untuk melakukan sebaliknya, dari nama yang disimpan sebagai teks ke nilainya, gunakan tanda kurung siku. Periksa namanya dengan has() terlebih dahulu: nama yang tidak ada dalam enum adalah error.

var text := "FRIDAY"
if Day.has(text):
	print(Day[text]) # 4

for day_name in Day: melakukan perulangan pada nama-nama, seperti perulangan pada dictionary.

challenge icon

Tantangan

Mudah

Skrip mendeklarasikan enum Day, dari MONDAY hingga SUNDAY. Program membaca dua baris: nama hari dengan huruf kapital dan jumlah hari (bilangan bulat, 0 atau lebih).

Cetak dua baris:

  1. Nama hari, has the value dan nilai hari itu dalam enum
  2. In, jumlah hari, days: dan nama hari setelah jumlah hari tersebut

Setelah SUNDAY, minggu dimulai kembali dari MONDAY. Untuk input FRIDAY dan 3, outputnya adalah:

FRIDAY has the value 4
In 3 days: MONDAY

Coba sendiri

extends Node

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

func _ready():
	var day_name := OS.read_string_from_stdin()
	var days := int(OS.read_string_from_stdin())
	# Cetak nilai hari tersebut dan hari setelah sejumlah hari itu berlalu
	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