Menu
CoddyTech

Metodi

Fa parte della sezione Programmazione orientata agli oggetti del percorso GDScript di Coddy. Lezione 5 di 65.

Una funzione dichiarata all'interno di una classe è un metodo: qualcosa che gli oggetti della classe possono fare. Come qualsiasi funzione, un metodo può accettare parametri e restituire un valore, e può leggere e modificare le variabili dell'oggetto:

# 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

Chiama un metodo su un oggetto usando un punto e passa gli argomenti tra parentesi:

var board := ScoreBoard.new()
board.greet() # Segnapunti pronto
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15

All'interno della classe, un metodo chiama un altro metodo dello stesso oggetto usando il suo nome: add(10) in add_bonus() significa self.add(10).

Un metodo dichiarato con -> void non restituisce nulla, mentre uno dichiarato con -> int deve restituire un int. Ogni chiamata agisce sul proprio oggetto: board.add(5) modifica board.points e nessun altro tabellone.

La chiamata deve corrispondere alla dichiarazione: board.add() senza un argomento è un errore segnalato prima che il programma venga eseguito.

challenge icon

Sfida

Facile

Completa i metodi della classe BankAccount in bank_account.gd. L'account conserva il proprio denaro nella variabile balance, che inizia da 0.

  • deposit(amount) aggiunge amount al saldo
  • withdraw(amount) sottrae amount e restituisce true. Se amount è maggiore del saldo, non modifica nulla e restituisce false
  • get_balance() restituisce il saldo

Il codice fornito legge il numero di comandi successivi, quindi un comando per riga: deposit AMOUNT oppure withdraw AMOUNT. Stampa una riga per ogni comando e il saldo finale. Per deposit 50 e withdraw 80 stampa:

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

Il tuo codice va in bank_account.gd. main.gd contiene il codice fornito per input/output e non può essere modificato.

Provalo tu

extends Node

func _ready():
	# Codice di input/output fornito: lascialo così com'è
	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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore GDScript online