Menu
CoddyTech

Özellik Alıcıları

Coddy'nin GDScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 12 / 65.

Bir get: bloğu, yani özelliğin getter'ı, özellik her okunduğunda çalışır ve döndürdüğü değer, okuyanın aldığı değerdir. Diğer özelliklerden hesaplanan bir değer için kullanın:

# rectangle.gd
var width: int = 4
var height: int = 3
var area: int:
	get:
		return width * height
var r := Rectangle.new()
print(r.area) # 12
r.width = 10
print(r.area) # 30

r.area bir değişken gibi, parantez olmadan okunur; ancak her okunduğunda yeniden hesaplanır, böylece her zaman mevcut genişlik ve yükseklikle eşleşir.

Bir özelliğin her iki bloğu da olabilir. Burada fahrenheit yalnızca dönüştürme yapar: okunması celsius değerini dönüştürür; değer atandığında ise tekrar dönüştürür ve sonucu celsius içinde saklar:

# temperature.gd
var celsius: float = 0.0
var fahrenheit: float:
	get:
		return celsius * 9 / 5 + 32
	set(value):
		celsius = (value - 32) * 5 / 9
t.celsius = 25.0
print(t.fahrenheit) # 77.0
t.fahrenheit = 98.6
print(t.celsius) # 37.0

Yalnızca get: içeren bir özellik, geleneksel olarak salt okunurdur. Ona değer atamak hata değildir, ancak getter atanan değeri yok sayar: r.area = 100 işleminden sonra r.area yine 30 döndürür.

challenge icon

Görev

Kolay

temperature.gd dosyasındaki Temperature sınıfını tamamla. Bu sınıf bir değer, celsius, saklar ve diğer ölçekleri bu değerden hesaplar:

  • fahrenheit: getter, celsius * 9 / 5 + 32 değerini döndürür; setter ise (value - 32) * 5 / 9 değerini celsius içine kaydeder
  • kelvin: getter'ı celsius + 273.15 değerini döndüren salt okunur bir özellik

Sağlanan kod, kaç komut geleceğini okur ve ardından her satırda bir komut okur: c VALUE, celsius değerini ayarlar; f VALUE ise fahrenheit değerini ayarlar. Her komuttan sonra üç özelliği iki ondalık basamakla yazdırır. c 25, f 98.6 ve c -40 için şunu yazdırır:

25.00 C | 77.00 F | 298.15 K
37.00 C | 98.60 F | 310.15 K
-40.00 C | -40.00 F | 233.15 K

Kodunu temperature.gd dosyasına yaz. main.gd, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.

Kendin dene

extends Node

func _ready():
	# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
	var temp := Temperature.new()
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		if parts[0] == "c":
			temp.celsius = float(parts[1])
		else:
			temp.fahrenheit = float(parts[1])
		print("%.2f C | %.2f F | %.2f K" % [temp.celsius, temp.fahrenheit, temp.kelvin])
quiz iconKendini test et

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

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online GDScript derleyicisi