Re: Problem Klassenvariable überschreiben
Oliver Mensinger <[email protected]>
| Newsgroups | gmane.comp.lang.ruby.german |
|---|---|
| Message-ID | <[email protected]> |
Winni,
da Du klassenspezifische Werte speichern moechtest, solltest Du Instanzvariablen
verwenden, denn eine Klassenvariable ist auch fuer die Unterklassen global,
deshalb kommt zwei mal der zuletzt zugewiesene Wert heraus.
Oder verwende eine Klassen-Konstante (wenn sich der Wert, also der Name, nicht
mehr aendert), etwas so:
class Person
def Person.name
type::NAME
end
end
class Vater < Person
NAME = "Heribert"
end
class Sohn < Person
NAME = "Thomas"
end
puts Vater::NAME -> Heribert
puts Sohn::NAME -> Thomas
Aber auch das wuerde ich so nicht machen. Vielleicht eher so:
class Person
@name
def Person.name
@name
end
end
class Vater < Person
@name = "Heribert"
end
class Sohn < Person
@name = "Thomas"
end
puts Vater.name -> Heribert
puts Sohn.name -> Thomas
Gruesse, Oliver.
On Fri, 14 Jun 2002, Winfried Mueller wrote:
>Hallo,
>
>ich habe ein Problem mit dem Überschreiben von Klassenvariablen.
>Vielleicht hat ja jemand eine Idee, was ich da nicht richtig
>sehe. Ich bin bisher davon ausgegangen, das bei einer
>abgeleiteten Klasse man eine Klassenvariable überschreiben kann,
>die dann nur für diese Klasse gültig ist. Das scheint aber nicht
>so zu sein:
>
>
>-snip
># Test Problematik Klassenvariable überladen
>class Vater
> @@name = "Heribert"
>
> def Vater.name
> return @@name
> end
>end
>
>class Sohn < Vater
> @@name = "Thomas"
>end
>
>puts "Vater:" + Vater::name
>puts "Sohn :" + Sohn::name
>
>-snip
>
>Dabei sollte eigentlich
>Vater: Heribert
>Sohn : Thomas
>
>herauskommen. Es kommt aber zweimal Thomas heraus.
>
>Hat jemande eine Idee.
>
>..Winni..
>_______________________________________________
>ruby-de mailing list
>[email protected]
>http://lists.bttr.org:8080/mailman/listinfo/ruby-de
>