Die Zuweisung von @_ zu einer Liste kann einige zusätzliche Funktionen enthalten.
Es macht es etwas leichter, zu einem späteren Zeitpunkt zusätzliche benannte Parameter hinzuzufügen, wenn Sie Ihren Code ändern Manche Leute betrachten dies als eine Funktion, ähnlich wie das Beenden einer Liste oder ein Hash mit einem abschließenden ',' es etwas leichter macht um Mitglieder in Zukunft anzuhängen.
Wenn Sie es gewohnt sind, dieses Idiom zu verwenden, scheint die Verschiebung der Argumente schädlich zu sein. Wenn Sie den Code bearbeiten, um ein zusätzliches Argument hinzuzufügen, könnte dies zu einem kleinen Fehler führen Passt auf.
z.B.
sub do_something {
my ($foo) = @_;
}
später
sub do_something {
my ($foo,$bar) = @_; # still works
}
sub do_another_thing {
my $foo = shift;
}
Wenn ein anderer Kollege jedoch bearbeitet, der die erste Form verwendet dogmatisch (vielleicht denken, sie Verschiebung böse ist) bearbeitet Dateien und abwesenden -mindedly dies zu lesen
sub do_another_thing {
my ($foo, $bar) = shift; # still 'works', but $bar not defined
}
und sie haben möglicherweise einen subtilen Fehler eingeführt.
Die Zuweisung zu @_ kann kompakter und effizienter sein, wenn Sie eine kleine Anzahl von Parametern gleichzeitig zuweisen müssen. Sie können auch Standardargumente angeben, wenn Sie den Hash-Stil der benannten Funktionsparameter
verwenden, z.
my (%arguments) = (user=>'defaultuser',password=>'password',@_);
Ich würde es immer noch als eine Frage von Stil/Geschmack betrachten. Ich denke, das Wichtigste ist es, den einen oder anderen Stil konsequent anzuwenden, indem man dem Prinzip der geringsten Überraschung folgt.
Ich glaube, Sie sollten Ihre Kollegen fragen, warum sie denken, dass Verschiebung böse ist und gemeinsam mit uns hier ihre Antworten in SO – ccheneson
@Bombe, ich sehe, dass Sie PHP ziemlich viel verwenden, aber Sie haben das Bedürfnis, beleidigend zu sein über Perl. Ich hoffe, Ihnen ist bewusst, dass die meisten der üblichen Beschwerden über Perl auch für PHP gelten. Jede Sprache hat ihre hässlichen Teile, aber die meisten haben etwas Gutes zu bieten, das es wert ist, damit umzugehen. Um es klar zu sagen, PHP ist, wie Perl, ein großartiges Werkzeug, mit dem wir freien Zugang haben - das gleiche gilt für Java, Python, Ruby und so weiter. Bitte beleidigen Sie nicht die Wahl der Werkzeuge. Ein Smiley ändert nicht die Art Ihres Kommentars. Eine Beleidigung mit einem Lächeln ist immer noch eine Beleidigung. – daotoad
Für was es wert ist, rassie, jemand, der dogmatisch eine Eigenschaft von Perl gegenüber einem anderen befürwortet, fehlt der Punkt von Perl. –