Kata Kunci self
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GDScript di Coddy. Pelajaran 4 dari 65.
Fungsi yang dideklarasikan dalam class berjalan pada satu object tertentu, yaitu object yang berada sebelum titik dalam pemanggilan. Di dalam fungsi, kata kunci self merujuk pada object tersebut.
# 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() menjalankan describe() dengan self ditetapkan ke my_car, sehingga fungsi tersebut membaca variabel mobil itu. Kamu tidak pernah meneruskan self sendiri:
var my_car := Car.new()
var taxi := Car.new()
taxi.color = "Yellow"
my_car.describe() # Saya adalah Sedan Merah
taxi.describe() # Saya adalah Sedan KuningPenulisan self. bersifat opsional. Di dalam fungsi class, color saja sudah berarti color milik object, jadi print("I am a %s %s" % [color, model]) menghasilkan hal yang sama.
Kamu memerlukan self saat parameter memiliki nama yang sama dengan variabel milik class. Di dalam fungsi, nama tersebut merujuk pada parameter, sedangkan self. memilih variabel milik object:
func repaint(color: String) -> void:
self.color = colorTanpa self., baris color = color menyalin parameter ke dirinya sendiri, dan mobil tetap memiliki warna lamanya.
Tantangan
MudahLengkapi dua fungsi pada class Car di car.gd:
set_info(year, make, model)menyimpan ketiga parameternya ke variabel mobil dengan nama yang samadescribe()mengembalikanThis car is a YEAR MAKE MODEL, contohnyaThis car is a 2020 Toyota Corolla
Kode yang disediakan membaca jumlah mobil yang akan dimasukkan, lalu satu baris untuk setiap mobil (year make model). Kode tersebut membuat setiap mobil, memanggil set_info(), lalu mencetak describe() untuk setiap mobil. Untuk baris 2020 Toyota Corolla, kode mencetak:
This car is a 2020 Toyota CorollaLetakkan kodemu di car.gd. main.gd berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
extends Node
func _ready():
# Kode input/output yang disediakan: biarkan apa adanya
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())
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass dan objectKata Kunci selfmethodpropertyKonstruktor (_init)Ringkasan: Kalkulator Sederhana4Polimorfisme
Method Overriding Sekali LagiDuck TypingKelas Abstrak dan MethodDesain InterfaceRingkasan: Kalkulator Bentuk7Sinyal
Apa itu Sinyal?Mendeklarasikan dan MemancarkanMenghubungkan ke SinyalSinyal dengan ArgumenRangkuman, Sistem Kesehatan10Pola Desain Bagian 2
Pola CommandPola AdapterPola DecoratorPola Template MethodPola StatePola Composite2Property class
Variabel instance vs. variabel statisFungsi statisSetter propertyGetter propertyPrivat berdasarkan konvensiRangkuman: Pengelola Rekening Bank5Enkapsulasi
Member Publik dan PrivatValidasi dengan SetterPenyembunyian InformasiProperty Hanya-BacaRingkasan: Sistem Catatan Siswa8Konsep OOP Lanjutan
Komposisi vs PewarisanInner ClassNode sebagai KomponenRefCounted vs NodeEnum dalam Class11Proyek: Manajemen Perpustakaan
Gambaran Umum Proyekclass Buku dan PenggunaLatihan sendiri: Compiler GDScript online