Menu
CoddyTech

Kurucu (_init)

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

new() sonrasında her özelliği ayarlamak birkaç satır sürer ve birini unutmak kolaydır. Bir kurucu, bir nesneyi oluşturulurken hazırlar. GDScript'te kurucu, _init() yöntemidir:

# book.gd
class_name Book
extends RefCounted

var title: String
var author: String
var pages: int

func _init(book_title: String, book_author: String, page_count: int) -> void:
	title = book_title
	author = book_author
	pages = page_count

new() öğesine aktardığınız bağımsız değişkenler, nesneyi döndürmeden önce otomatik olarak çalışan _init() işlevine gider:

var dune := Book.new("Dune", "Frank Herbert", 412)
print(dune.title) # Dune
print(dune.pages) # 412

_init() parametrelere sahip olduğunda, new() bu parametreleri iletmelidir: Book.new() ifadesini hiçbir argüman olmadan kullanmak, program çalışmadan önce bildirilen bir hataya neden olur. Varsayılan değeri olan bir parametre isteğe bağlıdır:

func _init(book_title: String, book_author: String = "Unknown") -> void:

Bu oluşturucu ile Book.new("Notes"), yazarı "Unknown" olan bir kitap oluşturur.

Yukarıdaki parametre adları özellik adlarından farklıdır. Aynı olsalardı, self konulu derste olduğu gibi self.title = title yazardınız.

challenge icon

Görev

Kolay

Book sınıfını book.gd dosyasında tamamla:

  • kurucu _init(book_title, book_author, page_count), bağımsız değişkenlerini title, author ve pages özelliklerine kaydeder
  • describe(), başlık tek tırnak içinde olacak şekilde 'TITLE' by AUTHOR, PAGES pages döndürür

Sağlanan kod, ardından kaç kitap geleceğini okur, sonra her kitap için başlık, yazar ve sayfa sayısının ; ile ayrıldığı bir satır okur. Her kitap için Book.new() oluşturur, describe() sonucunu yazdırır ve son olarak pages özelliklerinin toplamını yazdırır. Dune;Frank Herbert;412 satırı için şunu yazdırır:

'Dune' by Frank Herbert, 412 pages
Total pages: 412

Kodunu book.gd dosyasına yaz. main.gd, sağlanan giriş/çıkış 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 total := 0
	for i in count:
		var parts := OS.read_string_from_stdin().split(";")
		var book := Book.new(parts[0], parts[1], int(parts[2]))
		print(book.describe())
		total += book.pages
	print("Total pages: %d" % total)
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