Thread Daten aus Array (12 answers)
Opened by Gast at 2006-10-13 13:36

sid burn
 2006-10-13 16:36
#70755 #70755
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Stell dir vor du schreibst eine Klasse die eine farbe beinhaltet. Du hast z.B. die Möglichkeit die einzlenen RGB (Rot, Grün, Gelb) Werte zu setzen. (Der untere Code ist rein erfunden)

so erzeugst du die Farbe:
Code: (dl )
my $color = Color->new( 255, 0, 0 );

Und so liest du Sie aus:
Code: (dl )
$color->get_blue()

Code: (dl )
$color->get_red()

Und es gibt noch ein algemeines das den genauen Farbwert angibt.
Code: (dl )
$color->get


Das was du jetzt machst wäre vergleichbar als wenn du auf einmal die einzelnen Werte ausliest.
Code: (dl )
$color->[0]

Code: (dl )
$color->[1]


Das ganze Funktioniert jetzt noch so lange, wie die interne Darstellung stimmt. Sollte der Author von einem Array zu einem hash Wechseln Funktioniert dein Code nicht mehr, und du müsstest überall deinen Code anpassen. Wenn er ein Array benutzt, würde es ja schon Reichen wenn er die Reihenfolge im Array ändert, und du würdest dann auf einmal einen anderen Farbwert benutzen. Versuch mal so ein Problem ausfindig zu machen.

Stell dir vor der Author des Moduls geht jetzt folgendermaßen vor, und speichert die farbe intern auf einmal in YUV oder in CMYK oder sonst irgendwie anders. Dann Funktioniert dein Code ebenfalls nicht mehr.

Das was der Author aber macht ist eine Methode bereit zu stellen, die immer das selbe zurück gibt. Immer wenn du "$color->get" aufrufst bekommst du deinen RGB Wert. intern kann es aber jetzt antürlich sein das erst von CMYK nach RGB umgerechnet wird.

Da du aber direkt auf die Elemente zugreifst, würde dein Code jetzt nicht mehr Funktionieren.

Zum anderen muss es ja nicht so sein das eine "get" Methode einfach nur den Wert zurück gibt wie er gespeichert wird. Es kann auch genauso möglich sein, dass erst noch eine Berechnung gemacht wird, etwas umgewandelt wird etc.

All dies umgehst du wenn du direkt auf die Werte zugreifst, und nicht die Methoden benutzt.\n\n

<!--EDIT|sid burn|1160743231-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Daten aus Array