PDA

Visualizza la versione completa : Perchè il ciclo For in Ruby è sconsigliato ???


Grejo
08-06-2010, 17:14
Ciao. :ciauz:
Su un libro che sto leggendo per imparare Ruby s'è scritta la seguente affermazione:

Il ciclo for è implementato internamente tramite l'iteratore proprio dell'oggetto preso in considerazione. Per questo motivo, e anche per mantenere il codice più vicino alla filosofia di Ruby, sconsigliamo un uso massiccio dei costrutti for: è molto meglio usare i blocchi e gli iteratori.

Io adesso non capisco le seguenti cose:
- Cosa vuol dire che il ciclo for è implementato internamente tramite l'iteratore proprio dell'oggetto preso in considerazione?
- Perchè sono meglio gli iteratori che i cicli for?

Ciao. :ciauz:
Grejo

weppos
09-06-2010, 13:37
Vuol dire che usare for è equivalente ad usare each.
In altre parole i seguenti statement sono identici.


colors = %w(green red yellow)

for color in @colors
...
end

@colors.each do |color|
...
end


Come dice il libro, in realtà il primo internamente è implementato come il secondo.

Non solo. Il secondo modo segue a pieno la filosofia completamente object oriented di Ruby ed è decisamente molto più flessibile. Facendo uso dei blocchi, puoi passare come argomento ad each delle proc o lambda, addirittura sfruttare la sintassi symbol -> proc.


colors = %w(green red yellow)

print_item = Proc { |item| p(item) }
@colors.each(print_item)

@colors.each(&:downcase)

Loading