Tutorial flash #7 | Dizionario |





Benvenuti!
Flash questa volta non sarà solo per la brevità e velocità ma anche per l'ignoranza sull'argomento , quindi la poca conoscenza. L'argomento è molto interessante ma devo studiarlo a dovere per dare informazioni errate e al momento non ho tutto questo tempo 😓
L'argomento non è difficilissimo ma visto che si collega all'utilizzo di Json ( che conosco pochissimo ) ,e volevo fare una bella trattazione visto che era in programma anche per Thunkable , ho scelto di fare un esempio facile per poi tornarci con calma.
Devo ringraziare per questo spunto M@x@M dal gruppo telegram e visto che è anche un utente molto attivo ho ceduto alla tentazione e vado ad introdurre il Dizionario.
La prima cosa che mi viene in mente pensando al suo utilizzo sono le liste di liste , anche se la situazione è leggermente più complessa e i dati si possono dividere in più livelli e forme, ma credo che come esempio iniziale potrebbe essere molto calzante. Mi scuseranno gli informatici per questi miei paragoni da principiante 😄
Di seguito oltre alla mia amata pizza abbiamo anche due variabili, nel primo caso i dati sono organizzati come lista di liste nel secondo caso ho utilizzato i blocchi del dizionario e già qui possiamo notare una prima grande differenza, abbiamo la possibilità con blocchi specifici di introdurre una key e un value ( un pò come fosse un tag e value, quindi immaginiamo di trovare come con firebase dei blocchi dedicati, infatti è così ).
Nel primo caso ogni elemento della lista sarà formato da un elemento e una lista di due elementi, nel secondo caso ogni elemento ( se così si può chiamare ) del dizionario è identificato da una chiave e il suo valore, in questo caso una lista di due elementi.
Molto simile vero? Ma non altrettanto semplice. Nel primo caso se avessi necessità di individuare la margherita potrei usare il blocco look up in pairs per ricevere la lista associate quindi ingredienti e prezzo. E se non conosco l'elemento da cercare ? O voglio fare un controllo degli elementi presenti ? Dovrei creare una procedura per prelevare e poi controllare eventualmente tutti i primi elementi che anche in questo blocco sono identificati come key. ( Questo blocco è stato anche usato nel tutorial sulla classifica)
Nel secondo caso invece abbiamo a disposizione un blocco che restituisce tutti i valori delle chiavi e anche quelli dei valori , rapido ed essenziale, e lo useremo , e poi ci sono anche altri blocchi che servono per ricercare dati nei vari sottolivelli che si possono creare perché è un pò come se si potessero usare liste dentro altre liste , formate da liste 😂  mi sono perso pure io però in realtà è più semplice di come sembra.




Dopo questa comparazione andiamo a vedere questo esempio molto molto semplice.
Da un lato abbiamo i nomi delle pizze ( key ) ma potrebbe essere il nome di un utente, il prodotto di un magazzino, le città della nostra regione o quello che volete, e dall'altra parte abbiamo una mini lista con ingredienti e prezzo ( value ), ma potrebbe essere un solo elemento oppure 10 o 100, dipende dal nostro database.
Dividendo i dati in questo modo viene molto facile immaginare ( conoscendo anche firebase ) che se voglio sapere gli ingredienti della margherita o il suo prezzo, faccio la ricerca e lui subito mi darà come risultato i dati. 
Cosa faremo:
In basso nella textbox inseriamo il nome della pizza e alla pressione del tasto cerca avremo il nome , gli ingredienti e il prezzo nelle relative label oppure se la pizza non è presente una notifica ci avviserà della mancanza.


Passiamo al codice, molto semplice proprio per dare un'infarinatura del componente.
Ho introdotto una variabile locale NomePizza per ripulire eventuali errori di scrittura dell'utente , quindi vado a rendere tutto il testo maiuscolo upcase ( infatti nella variabile ho scritto tutto maiuscolo) e poi solitamente avrei usato trim con il blocco text della textbox ma non ho capito perché non funzioni , forse qualche bug.
E qui scatta la sfida 😂 e questa è la mia soluzione, utilizzo un replace per cercare tutti gli spazi vuoti e sostituirli con niente , banale ma efficace. Come segment ,che sembra vuoto, in realtà dopo aver inserito il cursore bisogna mandare uno spazio per ricreare effettivamente l'elemento spazio vuoto da controllare nel testo , in replacement invece mi introduco e lascio vuoto. Quindi questo blocco , al click del button , prende il testo della textbox , lo pulisce da tutti gli spazi e lo salva nella variabile locale.
Ecco uno dei blocchi specifici che mi permette di ricevere velocemente una lista con tutti i valori get keys che useremo per verificare se al suo interno c'è il nome della nostra pizza, c'è un blocco simile che restituisce tutti i value delle chiavi. In caso positivo andremo a disporre i valori nelle label altrimenti manderemo la notifica e puliamo il campo della textbox per una nuova ricerca.
Il blocco get value for key  mi permette di prelevare velocemente la lista collegata alla nostra margherita (che vi ricordo abbiamo pulito e salvato nella variabile NomePizza) e da questa lista prendere rispettivamente il primo e il secondo elemento da disporre nelle label relative. Molto semplice, c'è anche un blocco di riscontro in caso l'elemento non venga trovato, il campo or if not found che può tornare sempre utile. Puliamo la textbox per  una nuova ricerca.
 

 Che dire, l'esempio sarà sicuramente molto semplice ma può dare molti spunti per iniziare ad utilizzare il dizionario, e spero di portarne altri prima possibile.
Come sempre se avete idee, suggerimenti, dubbi o trovate errori 😂 vi aspetto nei comment i o sui vari social.
Alla prossima.

👉  Qui trovi il secondo tutorial sul dizionario


 Se hai apprezzato il mio lavoro offrimi un bel caffè 😍

 

Commenti

Ciao, spero ti piaccia il blog. Se ti fa piacere qui puoi offrirmi un caffè!

Post popolari in questo blog

GOOGLE SCRIPT & KODULAR READ, WRITE, UPDATE, DELETE

Tu lo conosci THUNKABLE?