Menu
CoddyTech

self Anahtar Kelimesi

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

Bir sınıfta tanımlanan işlev belirli bir nesne üzerinde çalışır: çağrıda noktanın önündeki nesne. İşlevin içinde self anahtar sözcüğü bu nesneyi ifade eder.

# car.gd
class_name Car
extends RefCounted

var color: String = "Red"
var model: String = "Sedan"

func describe() -> void:
	print("I am a %s %s" % [self.color, self.model])

my_car.describe(), self değeri my_car olarak ayarlanmış şekilde describe() işlevini çalıştırır; böylece işlev o arabanın değişkenlerini okur. self'i kendin asla iletmezsin:

var my_car := Car.new()
var taxi := Car.new()
taxi.color = "Yellow"
my_car.describe() # Ben kırmızı bir sedanım
taxi.describe() # Ben sarı bir sedanım

self. yazmak isteğe bağlıdır. Bir sınıf fonksiyonunun içinde, tek başına color zaten nesnenin color değerini ifade eder; dolayısıyla print("I am a %s %s" % [color, model]) aynı işi yapar.

Bir parametre sınıfın bir değişkeniyle aynı ada sahip olduğunda self gerekir. Fonksiyonun içinde ad parametreyi ifade eder ve self. nesnenin değişkenini seçer:

func repaint(color: String) -> void:
	self.color = color

self. olmadan, color = color satırı parametreyi kendi üzerine kopyalar ve araba eski rengini korur.

challenge icon

Görev

Kolay

car.gd dosyasındaki Car sınıfının iki fonksiyonunu tamamla:

  • set_info(year, make, model), üç parametresini aynı adlı araba değişkenlerinde saklar
  • describe(), This car is a YEAR MAKE MODEL değerini döndürür; örneğin This car is a 2020 Toyota Corolla

Verilen kod, kaç araba geleceğini okur, ardından her araba için bir satır okur (year make model). Her arabayı oluşturur, set_info() fonksiyonunu çağırır ve her araba için describe() sonucunu yazdırır. 2020 Toyota Corolla satırı için şunu yazdırır:

This car is a 2020 Toyota Corolla

Kodun car.gd dosyasına yazılacak. main.gd, verilen girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

extends Node

func _ready():
	# Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
	var count := int(OS.read_string_from_stdin())
	var cars: Array[Car] = []
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		var car := Car.new()
		car.set_info(int(parts[0]), parts[1], parts[2])
		cars.append(car)
	for car in cars:
		print(car.describe())
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