Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: akrobaticone - 01 Agosto 2010, 23:19:03

Titolo: [RISOLTO] Oggetto collection: come funziona?
Inserito da: akrobaticone - 01 Agosto 2010, 23:19:03
Come da titolo
ho sbirciato la documentazione ma non ho ben capito cosa sia l'oggetto collection
Titolo: Re: Oggetto collection: come funziona?
Inserito da: Ceskho - 02 Agosto 2010, 00:09:57
Come da titolo
ho sbirciato la documentazione ma non ho ben capito cosa sia l'oggetto collection


Una collection è una hash table...in pratica è una "tabella" in cui ad un dato, o più dati, è associata una chiave.....nel caso della collection le chiavi sono delle stringhe mentre i dati possono assumere qualsiasi valore....

Spiegare qui cosa è un hash table è una lunga storia.....ti consiglio di cercare in giro un documento o un buon libro che tratta di strutture dati per capire affondo cosa sia e come funziona....
Titolo: Re: Oggetto collection: come funziona?
Inserito da: akrobaticone - 02 Agosto 2010, 08:35:55
Ok
l'avevo vista in un esempio di gqambas ma non eara chiaro come funzionasse
provo a fare una ricerca sulle hash table
grazie
Titolo: Re: Oggetto collection: come funziona?
Inserito da: leo72 - 04 Agosto 2010, 11:20:05
In realtà le cose sono molto più semplici. In pratica una hash table, o anche dizionario in altri linguaggi, altro non è che una collezioni di oggetti rintracciabili mediante una chiave.

A differenza, ad esempio, di un vettore in cui l'indice rappresenta anche la chiave di ricerca (se vuoi estrarre l'oggetto n° x devi chiamare in Gambas Vettore[x-1]), una collezione permette di accedere al suo contenuto usando appunto una chiave.
A differenza di un vettore, quindi, non importa sapere la posizione a cui si trova l'oggetto da cercare: sarà la collezione stessa che estrarrà l'oggetto indicato dalla chiave scelta.

Facciamo un esempio.
Abbiamo una collezione che contiene le auto delle aziende. Sappiamo che per ogni marca è presente solo un modello, per cui potremmo usare una collezione, molto più "elastica" per ricerche di questo tipo.
Codice: gambas [Seleziona]
DIM Auto AS NEW Collection
  Auto.Add("Astra", "Opel")
  Auto.Add("Punto", "Fiat")
  Auto.Add("Golf", "VW")


Se vogliamo sapere qual'è l'auto di marca Opel, basta fare
Codice: gambas [Seleziona]
Print Auto("Opel")

Titolo: Re: Oggetto collection: come funziona?
Inserito da: akrobaticone - 04 Agosto 2010, 14:03:14
Quindi ci sono sempre una coppia di valori
l'etichetta e il valore associato a questa etichetta
naturalmente l'etichetta deve essere unica

sono possibili solo due dimensioni  o ad un etichetta si possono associare più valori?
Titolo: Re: Oggetto collection: come funziona?
Inserito da: md9327 - 04 Agosto 2010, 14:46:13
L'array è solo bidimensionale (key->value), ma ovviamente nel valore puoi inserire un'altra Collection, e così via...
Titolo: Re: Oggetto collection: come funziona?
Inserito da: akrobaticone - 05 Agosto 2010, 13:37:49
Le risposte sono state molto esaurienti
metto RISOLTO al totolo
Grazie
Titolo: Re: Oggetto collection: come funziona?
Inserito da: vuott - 13 Ottobre 2011, 23:12:55
Facciamo un esempio.

Codice: gambas [Seleziona]
DIM Auto AS NEW Collection
  Auto.Add("Astra", "Opel")
  Auto.Add("Punto", "Fiat")
  Auto.Add("Golf", "VW")


Se vogliamo sapere qual'è l'auto di marca Opel, basta fare
Codice: gambas [Seleziona]
Print Auto("Opel")



...se faccio così, io ho un avviso di errore: "Not a Function.  :-\ sulla linea del "Print". Cosa manca ?
Titolo: Re: [RISOLTO] Oggetto collection: come funziona?
Inserito da: Ceskho - 14 Ottobre 2011, 10:48:11
Codice: gambas [Seleziona]

DIM Auto AS NEW Collection 
Auto.Add("Astra", "Opel") 
Auto.Add("Punto", "Fiat") 
Auto.Add("Golf", "VW") 

Print Auto["Opel"] 
Titolo: Re: [RISOLTO] Oggetto collection: come funziona?
Inserito da: vuott - 14 Ottobre 2011, 15:44:08
Codice: gambas [Seleziona]

DIM Auto AS NEW Collection  
Auto.Add("Astra", "Opel")  
Auto.Add("Punto", "Fiat")  
Auto.Add("Golf", "VW")  

Print Auto["Opel"]  


Dunque, sì.. ho fatto la prova direttamente, e sì: ci vogliono le parentesi quadre.



Rimando a queste pagine della nostra WIKI:
http://www.gambas-it.org/wiki/index.php?title=Collection
http://www.gambas-it.org/wiki/index.php?title=Guide_della_comunit%C3%A0#Collection
Titolo: Re: [RISOLTO] Oggetto collection: come funziona?
Inserito da: Ceskho - 14 Ottobre 2011, 17:22:34
Codice: gambas [Seleziona]

DIM Auto AS NEW Collection 
Auto.Add("Astra", "Opel") 
Auto.Add("Punto", "Fiat") 
Auto.Add("Golf", "VW") 

Print Auto["Opel"] 


Dunque, sì.. ho fatto la prova direttamente, e sì: ci vogliono le parentesi quadre.

Sarai punito perchè hai diffidato! Al rogo!!!  ;D