Salve,
se ho una classe B che è ereditata da una classe E,supponiamo che @v è
una variabile di classe della classe B,se voglio accedere ad essa dalla
classe E come devo fare?devo usare self.v?
Grazie
Salve,
se ho una classe B che è ereditata da una classe E,supponiamo che @v è
una variabile di classe della classe B,se voglio accedere ad essa dalla
classe E come devo fare?devo usare self.v?
Grazie
Alessandro M. wrote:
Salve,
se ho una classe B che è ereditata da una classe E,supponiamo che @v è
una variabile di classe della classe B,se voglio accedere ad essa dalla
classe E come devo fare?devo usare self.v?Grazie
A dire il vero non lo so, ma provare non è difficile:
$ vi x
class B
attr_accessor :v
def initialize
@v = 0
end
end
class E < B
def v
self.v
end
end
e = E.new
puts e.v
$ ruby x
x:7:in v': stack level too deep (SystemStackError) from x:7:in
v’
from x:12
Quindi la risposta è no. self.v richiama ricorsivamente sè stesso.
Però cercando “ruby call base class” su Google il primo link ritornato
dà la soluzione, che è:
class E < B
def v
super
end
end
Paolo
Il 25 marzo 2009 18.04, Alessandro M. [email protected] ha
scritto:
Salve,
se ho una classe B che è ereditata da una classe E,supponiamo che @v è
una variabile di classe della classe B,se voglio accedere ad essa dalla
classe E come devo fare?devo usare self.v?
scusami, parliamo di variabili di classe o di istanza? @v è una
instance variable, a differenza di @@v che è una class variable.
Pietro G. wrote:
Il 25 marzo 2009 18.04, Alessandro M. [email protected] ha
scritto:Salve,
se ho una classe B che � ereditata da una classe E,supponiamo che @v �
una variabile di classe della classe B,se voglio accedere ad essa dalla
classe E come devo fare?devo usare self.v?scusami, parliamo di variabili di classe o di istanza? @v � una
instance variable, a differenza di @@v che � una class variable.
Hai ragione, non mi ero accorto dell’ambiguità nella domanda. La
soluzione però è la stessa:
class B
@@v = 0
def v
@@v
end
end
class E < B
def v
super
end
end
e = E.new
puts e.v
Paolo
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