Thread Array-Werte in Hash übertragen
(14 answers)
Opened by RalphFFM at 2008-04-20 12:16
Anstatt die einzelnen Werte zu übergeben und dann in einem Hash zu verpacken kannst du auch gleich den Nutzer ein Hash übergeben lasssen.
Das hat ganz einfach den Vorteil das der User sich nicht mehr die Reihenfolge mercken muss. Und erweiterungen für dich werden auch einfacher. Da du nicht immer einfach alles hinten dran hängen musst. Du könntest dein Beispiel also auch folgendermaßen umschreiben. Code: (dl
)
1 # So sieht deine Subroutine aus Ein weiterer Vorteil, du kannst auch Defaultwerte selber angeben. und die Reihenfolge ist immer noch egal. Beispielsweise hat nicht jeder Nutzer ein Haustier. Er müsste also für den 5ten Wert ei dir ein "undef" übergeben, sofern er den 6ten Wert noch ausfüllen möchte. Mit einem Hash ist ja reihenfolge volkommen egal. Code: (dl
)
1 sub function { Hier setzt du dann default für haustiere eine Array Referenz. Gibt ein Benutzer haustiere an. dann wird der Default überschrieben im nachhinein wieder überschrieben. Ansonsten ist es noch besser wenn du eine Hashreferrenz übergibst anstatt die Werte so. Code: (dl
)
1 sub function { Der Vorteil hierdrin liegt wenn du beim aufruf schon eine ungerade Anzahl angibst. Beispielsweise folgender Fehler. Code: (dl
)
function( vorname => 'david', haustiere => 'hund', 'katze' ) Dann bricht dein Code mit einer Fehlermeldung ab, da du hier eine ungerade Anzahl für ein Hash hast. Allerdiengs verweist die Fehlermeldung innerhalb der Subroutine nämlich bekommst du ein Fehler in der sub function() ausgegeben. Naja und das Interessiert dich ja wenig. Du willst ja wissen wo du die Fehlerhaften angaben gemacht hast. Wenn du eine Hashreferenz übergibst. Dann muss die Hashreferenz schon korrekt sein. Würde sie nicht korrekt sein. dann würde schon eie Fehlermeldung erscheinen die darauf verweist wo du die hashreferenz zusammen baust. Ansderer Punkt ist das du flexibler bist. Beispielsweise könntest du auch einen zweiten Parameter angeben. Der dann z.B. bestimmte Optionen regelt. Oder irgendetwas anderes was nicht direkt Personen Daten sind. Was hierbei noch sehr nett ist ist das Modul Params::Check was ab Perl 5.10 auch zum Core Modul gehört. Damit kannst du testen ob alles korrekt eingegeben wurde. Ich finde nur die Default Optionen nicht so gut. Aber die kannst du ja neu setzen. Ich setze die Optionen immer so das automatisch ein croak() geworfen wird, und wenn ein unbekannter Name auftauscht auch automatisch dabgebrochen wird. Somit werden auch rechtschreibfehler erkannt. Wenn ein benutzer ausversehen mal "nmae" anstatt "name" eintippt. Oder sonst irgendein name angegeben wird, der überhaupt nicht existiert. Evtl. weil du selber vergessen hast das ganze zu Implementieren. Oder weil ein nutzer beispielsweise die Doku nicht liest und "username" als Parameter eingibt, obwohl das Argument "user" heißt. ;) etc. pp. Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
|