[ruby-it] Variabili d'istanza non visibili

Nicola Nico theonenkl a gmail.com
Mar 25 Ago 2009 10:18:46 CEST


Ciao a tutti, vorrei fare un po' di chiarezza sulle variabili d'istanza
in ruby/rails: ho notato un comportamento diverso di queste variabili
usando un modello in rails, ed una classe in ruby (provata con irb).

Con entrambe: ho notato che creando una variabile d'istanza non nel
costruttore essa non è visibile negli altri metodi, viene ignorata
(facendo ad esempio @var = "valore"). Perchè? Il bello è dichiararle con
@, se non si possono dichiarare nei metodi avrebbero fatto meglio a
farle dichiarare a livello di classe.

Con una classe in ruby: se dichiaro la variabile d'istanza nel
costruttore essa è visibile e modificabile negli altri metodi

Con un modello: dichiarandole nel costruttore alcune sono visibili,
alcune no

def initialize(session)
  @session = session
  @user = nil
end

def log_in(user)
  if user
    @user = user
    ...
  end
end

In questo caso @session viene letta e modificata negli altri metodi,
mentre @user no.
O meglio, in log_in, @user viene impostata correttamente (facendo puts
vedo che è impostata a user), ma è come se non fosse d'istanza, perchè
usando @user in altri metodi questo vale ancora nil. Fatemi sapere,
spero che la domanda sia interessante e non una cosa banale. ciao




nicola
-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list