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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.