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ımself. 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 = colorself. olmadan, color = color satırı parametreyi kendi üzerine kopyalar ve araba eski rengini korur.
Görev
Kolaycar.gd dosyasındaki Car sınıfının iki fonksiyonunu tamamla:
set_info(year, make, model), üç parametresini aynı adlı araba değişkenlerinde saklardescribe(),This car is a YEAR MAKE MODELdeğerini döndürür; örneğinThis 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 CorollaKodun 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())
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
1Nesne Yönelimli Programlamanın Temelleri
Harici DosyalarNesne Yönelimli Programlamaya GirişSınıflar ve Nesnelerself Anahtar KelimesiMetotlarÖzelliklerKurucu (_init)Tekrar - Basit Hesap Makinesi4Çok Biçimlilik
Metot Ezme Konusuna Yeniden BakışÖrdek TiplemesiSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı7Sinyaller
Sinyal Nedir?Tanımlama ve Sinyal GöndermeSinyallere BağlanmaArgümanlı SinyallerTekrar - Sağlık Sistemi10Tasarım Kalıpları 2. Bölüm
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıBileşik Kalıp2Sınıf Özellikleri
Örnek ve Statik DeğişkenlerStatik FonksiyonlarÖzellik AyarlayıcılarıÖzellik AlıcılarıGeleneksel Olarak ÖzelTekrar - Banka Hesabı Yöneticisi5Kapsülleme
Public ve Private ÜyelerSetter'larla DoğrulamaBilgi GizlemeSalt Okunur ÖzelliklerTekrar - Öğrenci Kayıt SistemiKendi başına pratik yap: Online GDScript derleyicisi