Vi vorrei sottoporre due domande su due problemi che mi sono capitati
studiando Ruby.Nelle risposte considerate che sono all’inizio. 8>)
I domanda:
Questo e’ il codice che ho scritto
Creaziane dell array
a=%w{ pippo giovanni luca andrea }
Vedo quanti sono i componenti dell’array
n=a.size #Inizio il ciclo per stamparli
for i in 0…n
puts “Il valore e’---------->” + a[i].to_s
end
I valori stamapti sono questi:
Il valore e’---------->pippo
Il valore e’---------->giovanni
Il valore e’---------->luca
Il valore e’---------->andrea
Il valore e’---------->
La domanda e’ perche compare l’ultima riga? Cioe’ il nil?
II Domanda:
Questo codice l’ho preso dal libro di M. Ceresa nel 3° capitolo.
a=%w{pera mela 1 Antonio casa_roma}
class Array
def conta_array
for x in self
puts x
end
end
end
a.conta_array
Ovviamente ,funziona!! Ma la mia domanda e’ perche usa “self”
Come fa la funzione a sapere quanti sono i componenti dell’array?
Grazie a tutti per le eventuali risposte!!
Grazie per le risposte, siete stati molto gentili.
Guardando bene il codice la prima domanda non l’avrei dovuta fare!!
Grazie in particolare a Giovanni I. per l’esauriente spiegazione
sulla seconda domanda.
Per Andrea F.: In effetti il codice che tu hai scritto, l’autore lo
propone piu’ avanti per spiegare i BLOCCHI.
Il giorno 28/mag/07, alle ore 11:27, Giovanni C. ha scritto:
a=%w{ pippo giovanni luca andrea }
Questo crea un array a = [‘pippo’, ‘giovanni’, ‘luca’, ‘andrea’] di 4
elementi dove a[0] è il primo e a[3] l’ultimo. Ciò significa che…
for i in 0…n
Stai facendo un loop di una taglia più grande delle dimensioni
dell’array :). Dovresti fare 0…n-1 oppure 0…n (con tre punti) per
dirgli di loopare da 0 a n-1, cioè dimensioni dell’array.
La domanda e’ perche compare l’ultima riga? Cioe’ il nil?
Per il motivo sopra esposto
Ovviamente ,funziona!! Ma la mia domanda e’ perche usa “self”
Questo codice è un pò più complesso, andiamo con ordine: l’inclusione
della definizione in class Array significa che stiamo “aprendo” la
classe Array, aggiungendo un metodo: conta_array. Questo metodo è
definito “instance method”, cioè metodo di istanza, ovvero un metodo
che è proprio della singola istanza di una classe. In ruby si è
soliti indicare questi metodi con #, es. Array#conta_array.
All’interno del metodo conta_array self si riferisce all’oggetto al
quale stai chiedendo di contarsi. L’espressione “for x in self”
significa “per ogni x elemento di me stesso”. In queto caso un array
sa di quanti elementi è composto e passa nel loop ogni elemento che
lo compone.
Entrambi questi programmi però non sono propriamente ruby-esqui. In
ruby il modo preferito di stampare il contenuto di un array è
a = %w(quanto e bello ruby)
a.each {|element| puts element}
che tra l’altro ha il vantaggio di essere più corto
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.