Menu
CoddyTech

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 Kuning

Penulisan 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 = color

Tanpa self., baris color = color menyalin parameter ke dirinya sendiri, dan mobil tetap memiliki warna lamanya.

challenge icon

Tantangan

Mudah

Lengkapi dua fungsi pada class Car di car.gd:

  • set_info(year, make, model) menyimpan ketiga parameternya ke variabel mobil dengan nama yang sama
  • describe() mengembalikan This car is a YEAR MAKE MODEL, contohnya This 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 Corolla

Letakkan 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())
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler GDScript online