Parte del mio codice è il seguente:Come quadrare ogni elemento di un array nella classe Array in Ruby?
class Array
def square!
self.map {|num| num ** 2}
self
end
end
Quando chiamo:
[1,2,3].square!
mi aspetto di ottenere [1,4,9], ma invece ho [1,2,3 ]. Perché è così? Quando chiamo:
[1,2,3].map {|num| num ** 2}
al di fuori del metodo di classe, ottengo la risposta corretta.
Qual è il motivo (prestazioni?) Per distruggere l'array originale (dichiarazione/imperativo) invece di restituire una nuova (espressione/funzionale)? – tokland
Si usa 'map' per creare una serie di quadrati, e poi basta buttarlo via e ritornare' self'. – RocketR