Ruby – Arrays

r9Gli array sono come gli scaffali: puoi mettere tutto quello che vuoi sullo scaffale, puoi contare le cose che ci sono, puoi vedere se c’è spazio per metterci altro e così via. Da programmatori vediamo un esempio.

my_array = []
my_array << "Qualcosa"
my_array << 123
my_array << Time.now

my_array.each do |elemento|
    puts elemento
end

a0

La prima riga my_array = [] dichiara un array chiamato my_array, è vuoto, come si vede da [].

Una volta creato l’array può essere popolato (riempito), cosa che facciamo alle righe 2, 3, 4. Per inserire dati nell’array usiamo l’operatore <<.
Gli array in Ruby sono diversi da quelli degli altri linguaggi di programmazione, nel senso che possono contenere dati non omogenei. Nel nostro caso il primo elemento contiene una stringa, il secondo un numero (intero) e il terzo il nome di una funzione.

le righe 6-8 indicano un ciclo do-end che attraversa l’array con il metodo each (sarebbe ciascuno).

La prima riga dello script my_array = [] è possibile riscriverla così:

my_array = Array.new

che fa esattamente la stessa cosa. Quale usare? quella che vi piace di più 😀

Ma non basta: anche il ciclo do-end può essere rimpiazzato con un ciclo for-end:

my_array = Array.new
my_array << "Qualcosa"
my_array << 123
my_array << Time.now

for elemento in my_array
    puts elemento
end

L’output è uguale al precedente, anzi no: cambia l’ora. (come passa il tempo!).

C’è un terzo modo di creare un array, così:

my_array = ["Qualcosa", 123, Time.now]

In questo caso la dichiarazione dell’array è contemporanea al suo popolamento. E non basta: possiamo stampare l’array con una sola istruzione, senza cicli, utilizzando il metodo join:

my_array = ["Qualcosa", 123, Time.now]
puts my_array.join("\n")

Al solito l’output è simile ai precedenti.

Vediamo altre cose relative agli array. Con length possiamo sapere quanti elementi contiene l’array:

a3

nel nostro caso 3 elementi. Abbiamo già visto join:

a4

restituisce la stringa unione degli elementi, separati dalla stringa passatagli come argomento.
Per aggiungere elementi all’array possiamo usare push

a5

Nota: le parentesi di push sono facoltative.
L’opposto di push è pop che restituisce l’ultimo elemento dell’array e lo rimuove dallo stesso

a6

Gli elementi dell’array sono indicizzati:

a7

Sì, gli indici partono da 0. Se si chiede un elemento con indice troppo grande (> lehgth – 1) si ottiene nil.

pop accetta un parametro numerico. Se presente verrà estratto quel numero di elementi:

a8

al solito le parentesi per pop sono facoltative.
push accetta più parametri

a9

Al posto di push si può usare <<, un solo elemento per volta.

a10

i metodi min e max fanno quello che ci si aspetta

a11

naturalmente quando la cosa ha senso

a12

cioè mai mischiare le mele con le pere, tranne nel blog dell’amico Jean, lui può 🙂

a13

Gli array possono essere visti come set (insiemi). Per cui è possibile estrarre l’intersezione (con &) e l’unione (con +) di due array:

a14

Nel nostro caso l’unione era disordinata. Ma c’è sempre sort.
E tanto altro ancora 😉

Posta un commento o usa questo indirizzo per il trackback.

Lascia un commento

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.