Thread Automatisches Warning bei falschem Kontext für Funktion (15 answers)
Opened by LanX- at 2009-06-03 16:49

sid burn
 2009-06-04 18:07
#122350 #122350
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ich würde es so machen das Funktionen im Skalaren Kontext "immer" etwas zurück geben. Wenn du eine Liste zurück gibst, dann gibst du im Skalaren Kontext eben ein Arrayref zurück, und im Listenkontext das Array selber.

und ein
Code: (dl )
return wantarray ? \@list : @list;

am ende finde ich jetzt auch nicht so aufwendig. Und deine nutzer können wählen was sie gerade besser benötigen. Referenzen zurück zu geben hat noch den Vorteil das nicht ständig werte umkopiert werden.

Wenn du immer etwas im Skalaren Kontext zurück gibst macht es das Interface auch logischer und leichter. Die Rückgabe im Listenkontext ist also Optional.

Und wenn man ein arrayref z.B. im Skalarenkontext zurück bekommt ist das verhalten im Listenkontext ja schon nahezu intuitiv wenn du dort wirklich die elemente zurück gibst.

Ansonsten wenn du Funktionen hast die Lediglich etwas für den Skalaren kontext zurück geben, ist es auch nicht schlimm wenn sie im Listenkontext genutzt werden, es geht dabei nichts kaputt.

Und in der Regel würde ich sagen passiert soetwas seltener das man eine Funktion im Listenkontext nutzt obwohl man Skalaren kontext wollte. MAn spart sich also letztendlich das Croaken.


"Contextual::Return" finde ich zwar von der Idee her sehr gut. Und das was mir gefällt ist das man auch die unterschiedlichen Skalaren Kontexte behandeln kann, String, Zahl etc.

Problem ist aber das Damian die ganzen Modul einmal geschrieben hat, um sie im PBP zu erwähnen und seitdem praktisch ungewartet sind. Bei Contextual::Return kommt noch hinzu das die Rückgabe soweit ich weiß immer ein objekt ist, was wohl in bestimmten fällen zu fehlern führen kann.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Automatisches Warning bei falschem Kontext für Funktion