Autore Topic: [RISOLTO] Oggetto collection: come funziona?  (Letto 1686 volte)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
[RISOLTO] Oggetto collection: come funziona?
« il: 01 Agosto 2010, 23:19:03 »
Come da titolo
ho sbirciato la documentazione ma non ho ben capito cosa sia l'oggetto collection
« Ultima modifica: 05 Agosto 2010, 13:38:13 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Oggetto collection: come funziona?
« Risposta #1 il: 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....

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Oggetto collection: come funziona?
« Risposta #2 il: 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
"e il naufragar m'è dolce in questo mar"

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Oggetto collection: come funziona?
« Risposta #3 il: 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")

Visita il mio sito personale: http://www.leonardomiliani.com

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Oggetto collection: come funziona?
« Risposta #4 il: 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?
"e il naufragar m'è dolce in questo mar"

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Oggetto collection: come funziona?
« Risposta #5 il: 04 Agosto 2010, 14:46:13 »
L'array è solo bidimensionale (key->value), ma ovviamente nel valore puoi inserire un'altra Collection, e così via...

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re: Oggetto collection: come funziona?
« Risposta #6 il: 05 Agosto 2010, 13:37:49 »
Le risposte sono state molto esaurienti
metto RISOLTO al totolo
Grazie
"e il naufragar m'è dolce in questo mar"

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Oggetto collection: come funziona?
« Risposta #7 il: 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 ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [RISOLTO] Oggetto collection: come funziona?
« Risposta #8 il: 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"] 

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.724
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: [RISOLTO] Oggetto collection: come funziona?
« Risposta #9 il: 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
« Ultima modifica: 26 Maggio 2014, 01:41:47 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: [RISOLTO] Oggetto collection: come funziona?
« Risposta #10 il: 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