Menu
CoddyTech

Metotlar

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

Bir sınıfın içinde bildirilen bir işlev metottur: sınıfın nesnelerinin yapabildiği bir şey. Herhangi bir işlev gibi, bir metot parametre alabilir ve bir değer döndürebilir; ayrıca nesnenin değişkenlerini okuyup değiştirebilir:

# score_board.gd
class_name ScoreBoard
extends RefCounted

var points: int = 0

func greet() -> void:
	print("Scoreboard ready")

func add(amount: int) -> void:
	points += amount

func doubled() -> int:
	return points * 2

func add_bonus() -> int:
	add(10)
	return points

Bir nesne üzerinde nokta kullanarak metot çağırın ve argümanları parantez içinde iletin:

var board := ScoreBoard.new()
board.greet() # Skor tablosu hazır
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15

Sınıfın içinde, bir metot aynı nesnenin başka bir metodunu adıyla çağırır: add(10), add_bonus() içinde self.add(10) anlamına gelir.

-> void ile tanımlanan bir metot hiçbir şey döndürmez, -> int ile tanımlanan bir metot ise bir int döndürmelidir. Her çağrı kendi nesnesi üzerinde çalışır: board.add(5), board.points değerini değiştirir ve başka hiçbir skor tablosunu değiştirmez.

Çağrı bildirimle eşleşmelidir: board.add() bağımsız değişken olmadan kullanılırsa program çalışmadan önce hata bildirilir.

challenge icon

Görev

Kolay

bank_account.gd dosyasındaki BankAccount sınıfının yöntemlerini tamamla. Hesap, parasını başlangıç değeri 0 olan balance değişkeninde tutar.

  • deposit(amount), bakiyeye amount ekler
  • withdraw(amount), amount değerini çıkarır ve true döndürür. amount bakiyeden büyükse hiçbir şeyi değiştirmez ve false döndürür
  • get_balance(), bakiyeyi döndürür

Sağlanan kod, ardından kaç komut geleceğini ve her satırda bir komut olacak şekilde komutları okur: deposit AMOUNT veya withdraw AMOUNT. Her komut için bir satır ve son bakiyeyi yazdırır. deposit 50 ve withdraw 80 için şunları yazdırır:

Deposited 50
Not enough money for 80
Current balance: $50

Kodunu bank_account.gd dosyasına yaz. main.gd, sağlanan 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 account := BankAccount.new()
	var count := int(OS.read_string_from_stdin())
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		var amount := int(parts[1])
		if parts[0] == "deposit":
			account.deposit(amount)
			print("Deposited %d" % amount)
		elif account.withdraw(amount):
			print("Withdrew %d" % amount)
		else:
			print("Not enough money for %d" % amount)
	print("Current balance: $%d" % account.get_balance())
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