Salve a tutti! Sono nuovo di questo forum. Invio questo post in quanto mi interessava avere delle delucidazioni riguardo alla strategia di valutazione utilizzata da Ruby: chiamata per valore o per riferimento o una delle altre. Basta infatti vedere il link di wiki http://en.wikipedia.org/wiki/Evaluation_strategy in cui distingue fra stretegie di valutazione e all'interno di ciascuna specifica ulteriormente.... Grazie anticipatamente per la risposta. CIAO!
on 2009-06-28 12:13
on 2009-06-28 12:40
> From: Gian luca Colotto <gianluc1986@gmail.com> > To: ml@lists.ruby-it.org > Sent: Sunday, 28 June, 2009 12:13:46 > Subject: [ruby-it] Chiamata per valore o per riferimento > > Salve a tutti! benvenuto > Sono nuovo di questo forum. io rispondo dal lato mailing list :) > Grazie anticipatamente per la risposta. in realtà non hai fatto una domanda.. comunque nel link che proponi ruby avrebbe una semantica "call by sharing", o "passaggio per valore del riferimento". Esempio veloce che è più chiaro >> def f(x) x << 1 end => nil >> a=1 => 1 >> b=[] => [] >> f(a) => 2 >> a => 1 >> f(b) => [1] >> b => [1] vedi che gli oggetti passati per riferimento possono essere mutati, solo che alcuni tipi (eg i numeri) sono immutabili Allo stesso tempo, l'assegnazione all'interno dei metodi non influenza il chiamante: >> def f(x) x+=x end #assegnazione => nil >> f(a) => 2 #x nel metodo è stato ri-assegnato >> f(b) => [1, 1] # anche qui >> a => 1 #ma non ci sono modifiche alle variabili esterne >> b => [1]
on 2009-07-01 13:56
Non sapevo che in alcuni casi si potesse modificare il valore, forse preferivo che non si potesse fare del tutto, per chiarezza. La cosa migliore sarebbe stata il poter scegliere come per esempio in php, non capisco i motivi di tale scelta. In ruby 1.9 ci sono cambiamenti su questo tema?
on 2009-07-03 00:02
-- blog it: http://riffraff.blogsome.com blog en: http://www.riffraff.info ----- Original Message ---- > From: Marco Mastrodonato <m.mastrodonato@gmail.com> > To: ml@lists.ruby-it.org > Sent: Wednesday, 1 July, 2009 13:56:05 > Subject: Re: [ruby-it] Chiamata per valore o per riferimento > > Non sapevo che in alcuni casi si potesse modificare il valore, forse > preferivo che non si potesse fare del tutto, per chiarezza. La cosa > migliore sarebbe stata il poter scegliere come per esempio in php, non > capisco i motivi di tale scelta. non saprei, penso sia perché è la cosa che ha più senso in un contesto OO. Non si tratta molto di poter modificare il valore, ma del fatto che tutto si risolve nell'invio di messaggi a oggetti (ovvero la chiamata di metodi). Il fatto che alcuni oggetti (IO, liste) rispondano a questi messaggi modificando lo stato, mentre altri (numeri, simboli) forniscono solo valori di ritorno è un dettaglio. In cambio hai un modello concettuale molto semplice: esistono solo oggetti e tutti sono passati per riferimento. D'altronde, come cliente di una procedura che muta i parametri hai controllo comunque su questa cosa: basta passare una copia per evitare che quella che usi venga modificata (che generalmente è comunque una cattiva idea). Oppure, se vuoi, puoi rendere immutabile un oggetto mutabile usando #freeze. > In ruby 1.9 ci sono cambiamenti su > questo tema? non credo, l'idea è vecchia di 30 anni e abbastanza comprovata :)
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.