Esistono i distruttori in ruby?Ed è possibile usare un passaggio per
riferimento sempre in ruby?
Grazie
Esistono i distruttori in ruby?Ed è possibile usare un passaggio per
riferimento sempre in ruby?
Grazie
Alessandro M. wrote:
Esistono i distruttori in ruby?Ed è possibile usare un passaggio per
riferimento sempre in ruby?Grazie
In ruby non esistono distruttori.
Il passaggio di parametri invece e’ un po’ diverso dai linguaggi
“antichi” come C e Pascal.
In Ruby ogni cosa e’ un oggetto.
Tu non manipoli gli oggetti direttamente, ma riferimenti ad essi.
Le variabili sono solo riferimenti ad oggetti.
E quando passi un riferimento in un metodo, viene passato per valore,
cioe’ duplicato.
Detto cosi’ sembra strano, ma vediamo se qualche esempio chiarisce.
Quando fai:
def add(list, obj)
list << obj
end
list = []
add(list, 10)
puts list.inspect # [10]
quello che ottieni e’ che la lista originale e’ stata modificata, come
succede in un normale passaggio per riferimento.
Pero’ i riferimenti vengono copiati.
Se fai:
def swap(a, b)
a, b = b, a
end
x, y = 10, 20
puts [x, y] # => [10, 20]
swap(x, y)
puts [x, y] # => [10, 20]
le variabili x e y non vengono effettivamente scambiate perche’ al
metodo swap hai passato copie dei tuoi riferimenti, cioe’ x ed a sono
due riferimenti diversi che stanno puntando allo stesso oggetto, il
Fixnum di valore 10.
Percio’ nell’istruzione di scambio
a, b = b, a
non stai alterando le variabili x e y che avevi al di fuori della
funzione.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs