Perl-Konstruktor Startparameter prüfen



  • Hi
    ich hoff mal ich bin im richtigen form.

    bin gerade dabei ein perl-projekt umtzusetzten.
    da ich mich nicht so gut in perl-oop auskenne (beziehungsweise generell in perl), bin ich nun auf ein so wie mir scheint simples problem gestoßen jedoch kann ich keine "elegante" lösung finden...

    also mein problem ist folgendes:
    ich hab ein package, dieses soll über einen konstruktor instanziert werden...
    also in etwa so:

    my $Obj = Package->new("Startparameter1","Startparameter2","Startparameter3");
    ...
    ...
    

    mein konstruktor sieht so aus:

    sub new($)
    {
    	my $class = shift;
    	my $self  = {};
    
    	$self->{1} = shift;
    	$self->{2} = shift;
    	$self->{3} = shift;
    
    	return bless($self,$class);
    }
    

    auf diese werte greife ich dann über getter & setter methoden zu:

    #1
    sub get_1
    {
    	my $self=shift;
    	return $self->{1};
    }
    sub set_1
    {
    	my $self=shift;
    	my $new1=$_[0];
    	$self->{1}=$new1;
    }
    

    so nun meine fragen:

    1. kann man das auf diese art und weise machen oder ist hier i.was "unsauber" bzw. wird eig in der praxis anders umgesetzt? (habe nur mittelmäßige perl-kenntnisse möchte mich aber sehr gerne verbessern...!!)
    --> vll auch mit einer guten perl-oop lektüre...? (kennt ihr hier empfehlenswerte bücher?)

    2. wie kann ich hier prüfen das der "anwendungsprogrammierer" der mein package später benutzt, wirklich 3 Parameter angegeben hat?
    (also ich hatte die idee einfach alle parameter durchzuzählen und mit einem wert zu vergleichen...
    dies hat aber für mich, den nachteil das ich sofern das package erweitert werden soll diese zahl ändern müsste ... gibt es da vll was dynamischeres bzw. was eleganteres?)
    wie macht ihr das?

    hoff ich habe das problem möglichst verständlich beschrieben ... 🙄
    lg



  • ach ja und eine frage hab ich auch noch...
    in meinem konstruktor:

    sub new($)
    {
        my $class = shift;
        my $self  = {};
    
        $self->{1} = shift;
        $self->{2} = shift;
        $self->{3} = shift;
    
        return bless($self,$class);
    }
    

    ist ja hinter dem subroutinen-name -> "($)" was bedeutet das und was macht es?
    es würde mich schon ein hinweis reichen nachdem ich google'n kann...
    aber ich kann dazu einfach nix finden (vll such ich nach dem falschen...) und durch einfügen und "rausnehmen" kann ich keine funktionalen unterschiede erkennen... (bis jetzt...)

    lg



  • Dieser Thread wurde von Moderator/in Shade Of Mine aus dem Forum Webzeugs in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten