Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
Corso su Ruby: gli array
Scritto da Satish Talim il 09-05-2007 ore 10:41
Intel Cluster Studio XE
Un array o vettore è una struttura dati complessa usata in molti linguaggi di programmazione e chiaramente ispirata alla nozione matematica di vettore. Più precisamente, l'array è in genere classificato come un costruttore di tipo: in altre parole, esso consente di definire nuovi tipi di dati a partire da (come aggregati di valori di) tipi preesistenti. Si può immaginare un array come una sorta di casellario, le cui caselle sono dette celle dell'array stesso. Ciascuna delle celle si comporta come una variabile tradizionale; tutte le celle sono variabili di uno stesso tipo preesistente, detto tipo base dell'array. Si parlerà perciò di tipi come "array di interi" e "array di stringhe".

Un array è in pratica una lista ordinata di elementi; ogni posto chiamato indice di questa lista si comporta come una variabile: è possibile conoscere a quale oggetto una particolare posizione punta e, naturalmente, farla puntare ad un oggetto differente. L'array può essere realizzato usando due parentesi quadre, con nell’esempio seguente, parentesiQuadre.rb:
  1. <span style="font-size:1.0em"># Arrays
  2.  # array vuoto
  3. var1 = []
  4. # l'array inizia con l'indice 0
  5. puts var1[0]
  6.  
  7. # un array può contenere un singolo numero
  8. var2 = [5]
  9. puts var2[0]
  10.  
  11. # an array può contenere due stringhe
  12. var3 = 
  13. puts var3[0]
  14. puts var3[1]
  15.  
  16. flavour = 'mango'
  17. # un array gli elementi del quale stanno puntando a tre oggetti – un float, una stringa e un array 
  18. var4 = [80.5, flavour, [true, false]]
  19. puts var4[2]
  20.  
  21. # la virgola è ignorata
  22. name = 
  23. puts name[0]
  24. puts name[1]
  25. puts name[2]
  26. puts name[3]
  27.  
  28. # nil è un modo di Ruby per non dire niente 
  29. puts name[4]
  30. # si possono aggiungere molti più elementi
  31. name[4] = 'Pune'
  32. puts name[4]
  33. # possiamo aggiungere qualsiasi cosa!
  34. name[5] = 4.33
  35. puts name[5]
  36. # è possibile aggiungere un array ad un array 
  37. name[6] = [1, 2, 3]
  38. puts name[6]
  39.  
  40. #alcuni metodi negli array
  41. newarr = [45, 23, 1, 90]
  42. puts newarr.sort
  43. puts newarr.length
  44.  
  45. #il metodo <i>each (iterator)</i> – estrae ogni elemento in lang
  46. languages = 
  47.  
  48. languages.each do |lang|
  49.   puts 'Amo ' + lang + '!'
  50.   puts 'No?'
  51. end
  52.  
  53. # cancella un'entrata al centro e fa slittare gli altri valori
  54. languages.delete('Mumbai')
  55. languages.each do | lang |
  56.   puts 'Amo ' + lang + '!'
  57.   puts 'No?'
  58. end</span>
Il metodo each permette di fare qualcosa, quando lo si desidera, ad ogni oggetto a cui l'array punta. Nell'esempio, si può accedere ad ogni oggetto nell'array senza usare alcuna numerazione. E’ importante ricordare però che:
  • la variabile lang all'interno di goalposts si riferisce ad ogni elemento dell'array mentre esegue il loop;
  • il do e l'end identificano un blocco di codice, che sarà eseguito per ogni elemento. I blocchi sono utilizzati in maniera estensiva in Ruby.
Ecco un esempio di metodo che ritorna un array: array.rb
  1. <span style="font-size:1.0em">def mtdarry
  2.   10.times do | num |
  3.     square = num * num
  4.     return num, square if num > 5
  5.   end
  6. end
  7.  
  8. num, square = mtdarry
  9. puts num
  10. puts square </span>
L'output è:
  1. <span style="font-size:1.0em">
  2. > ruby mtdarry.rb
  3. 6
  4. 36
  5. > Exit code: 0 </span>
Il metodo times della classe Integer ripete un certo numero di volte lo stesso blocco, passando valori da 0 a num-1. Come si può notare, se si dà come return parametri multipli, il metodo li inserisce in un array. Si può usare un assegnamento parallelo per collegare tra loro questi valori. La documentazione completa sugli array è comunque disponibile on line.

"Traduzione e adattamento a cura di Francesca Beatrice Cice. La versione originale del tutorial di Satish Talim può essere trovata su rubylearning.com"
Precedente: I fiocchi di neve di IBM sorpassano la legge di Moore
Successiva: PyDigg, un modulo Python per sfruttare le Digg API
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.28 secondi.