Aggiungere e rimuovere
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 33 di 78.
Per aggiungere un membro, assegna true alla sua chiave. Aggiungere un membro che è già nell'insieme non cambia nulla, quindi, quando devi sapere se è nuovo, controlla prima con has():
var inventory := {"rope": true}
if inventory.has("torch"):
print("Already have torch")
else:
inventory["torch"] = true
print("Added torch")Per rimuovere un membro, chiama erase(). Restituisce true quando il membro è stato rimosso e false quando non era nell'insieme. Un membro mancante non è mai un errore:
print(inventory.erase("rope")) # true
print(inventory.erase("map")) # false
print(inventory) # { "torch": true }Poiché erase() restituisce un valore booleano, puoi usarlo direttamente come condizione: if inventory.erase("map"): esegue il suo blocco solo quando "map" era un membro.
clear() rimuove tutti gli elementi, size() li conta e is_empty() è true per un insieme senza elementi.
Sfida
FacileIl programma legge i comandi, uno per riga, fino alla riga done. Ogni comando è add ITEM oppure remove ITEM. Il codice iniziale divide già ogni comando in action e item.
- Per
add: se l’elemento è nuovo, aggiungilo all’insiemeinventorye stampaAdded ITEM. Altrimenti stampaAlready have ITEM. - Per
remove: se l’elemento è nell’insieme, rimuovilo e stampaRemoved ITEM. Altrimenti stampaNo ITEM to remove.
Dopo done, stampa Inventory: seguito dagli elementi uniti con , , oppure Inventory: empty quando l’insieme è vuoto. Per l’input:
add torch
add rope
add torch
remove map
remove rope
donel’output è:
Added torch
Added rope
Already have torch
No map to remove
Removed rope
Inventory: torchProvalo tu
extends Node
func _ready():
var inventory := {}
while true:
var command := OS.read_string_from_stdin()
if command == "done":
break
var parts := command.split(" ")
var action := parts[0]
var item := parts[1]
# Aggiungi o rimuovi l'oggetto
# Stampa l'inventario
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online