Menu
CoddyTech

Enum Değerleri

Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 39 / 78.

Her enum seçeneği bir int değeridir; bu nedenle seçenekleri karşılaştırabilir ve onlarla işlem yapabilirsiniz:

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'un kendisi, adlardan değerlere eşleme yapan bir sözlük gibi çalışır. keys() adları sırayla, values() değerleri ve size() seçeneklerin sayısını döndürür:

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

Bir değerin adını yazdırmak için, keys() dizisini o değerle indeksleyin. Bu, seçeneklerin varsayılan değerleri 0, 1, 2... olduğunda işe yarar. Seçilmiş değerlere sahip bir enum için, bir değerin adını döndüren find_key() kullanın:

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

Üst düzeyde enum Coin { COPPER = 1, SILVER = 10 } olduğunda, Coin.keys()[10] aralık dışındadır; find_key() ise çalışır:

print(Coin.find_key(10)) # SILVER

Ters yönde, metin olarak saklanan bir addan değerine gitmek için köşeli parantezleri kullanın. Önce adı has() ile kontrol edin: enum'da olmayan bir ad hataya yol açar.

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

for day_name in Day: bir sözlük üzerinde döngü gibi adlar üzerinde döngü yapar.

challenge icon

Görev

Kolay

Betik, MONDAY ile SUNDAY arasındaki Day enum'unu tanımlar. Program iki satır okur: büyük harflerle yazılmış bir günün adını ve gün sayısını (0 veya daha fazla tam sayı).

İki satır yazdır:

  1. Günün enum'daki adını, değerinin has the value olduğunu ve değerini
  2. In, sayıyı, days: ve bu kadar gün sonraki günün adını

SUNDAY'dan sonra hafta yeniden MONDAY ile başlar. FRIDAY ve 3 girdileri için çıktı şöyledir:

FRIDAY has the value 4
In 3 days: MONDAY

Kendin dene

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())
	# Günün değerini ve belirtilen sayıda gün sonraki günün değerini yazdır
	pass
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online GDScript derleyicisi