Schrift
[thread]10755[/thread]

Hashref deref (Seite 2)



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
pktm
 2007-11-09 00:41
#102092 #102092
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ja so mal von der Sache mit der gänzlich fehlenden Dokumentation abgesehen wäre es wohl noch sinnvoll, beim Konstruktor zu prüfen, ob Parameter angegeben wurden.
Wenn du hässliche Fehler mit Positionsangabe Produzieren lassen willst kannst du dafür Carp benutzen.
http://www.intergastro-service.de (mein erstes CMS :) )
Froschpopo
 2007-11-09 01:16
#102095 #102095
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
dann mach ich einfach
Code: (dl )
$self->init(@_) if @_

das müsste doch schon reichen.
pktm
 2007-11-09 11:36
#102104 #102104
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Keine Ahnung. *Muss* die Methode init() denn aufgeruden werden?
Wenn das nur geschehen soll wenn etwas übergeben wird reicht das.
Allerdings fehlt dann immer noch die Überprüfung dessen, was du da als Parameter bekommst. Das machst du am besten in init().
Du solltest da ja z.B. wissen, ob das, was auch immer du da als Parameter bekommst, vom richtigen Datentyp (Hash) ist, oder, wenn es ein Objekt ist, von der richtigen Klasse ist.
http://www.intergastro-service.de (mein erstes CMS :) )
Struppi
 2007-11-09 11:42
#102106 #102106
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Die Überprüfung erfolgt doch bereits in der Funktion, eine doppelte ist nicht nötig.
pktm
 2007-11-09 13:29
#102111 #102111
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Struppi+2007-11-09 10:42:49--
Die Überprüfung erfolgt doch bereits in der Funktion, eine doppelte ist nicht nötig.


Nun, wenn die Module größer werden kann man sowas nicht mehr so einfach sagen. Da ist es mir manchmal lieber zweimal zu prüfen als irgendwo was durchflutschen zu lassen.
Dennoch bleibt das Problem bestehen, dass geprüft wird *ob* was da ist, nicht jedoch *was* da ist.
http://www.intergastro-service.de (mein erstes CMS :) )
Struppi
 2007-11-09 17:38
#102138 #102138
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
pktm+2007-11-09 12:29:34--
Nun, wenn die Module größer werden kann man sowas nicht mehr so einfach sagen. Da ist es mir manchmal lieber zweimal zu prüfen als irgendwo was durchflutschen zu lassen.
Wenn du in der Funktion prüfst, in der die Aktion abläuft, wo soll da was durchflutschen?

Die param Funktion könnte z.b. so aussehen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
sub init {
    my $self = shift;
        my $param = ref $_[0] ? shift : {@_};
        if ($param) {
        for (keys %$param) {
            $self->{$_} = $param->{$_};
        }
        }
}
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2007-11-08 21:17.