Jetzt, da die Perl-Entwickler sich dazu entschlossen haben, bestimmte/wann-Anweisungen abzulehnen, gibt es einen empfohlenen Ersatz, der nicht nur auf if/elsif/else zurückgeht?Was ist der empfohlene Ersatz für Perl's veraltet-ish gegeben/wann?
Antwort
if
/elsif
/else
Ketten sind die beste Option die meiste Zeit - es sei denn, etwas ganz anderes ist besser als beideif
/elsif
/else
undgiven
/when
, die oft tatsächlich vernünftig ist. Beispiele für "völlig unterschiedliche" Ansätze sind die Erstellung verschiedener Objekttypen für die Behandlung verschiedener Szenarien. Die Methodenvermittlung erledigt Ihre Arbeit für Sie oder bietet die Möglichkeit, Ihren Code datengesteuerter zu gestalten. Beide können, wenn sie geeignet sind und Sie sie richtig machen, die Anzahl der "switch statement" -Konstrukte in Ihrem Code erheblich reduzieren.
Nur als Ergänzung habe ich festgestellt, dass eine Kombination aus 'für' und if/elsif/else gut ist, wenn Sie einen gegebenen/wann/default Code haben, der schnell aktualisiert werden muss. Ersetzen Sie einfach given
durch for
und ersetzen Sie die when
Anweisungen durch eine Kaskade von if
& elsif
, und ersetzen Sie default
durch else
. Dies ermöglicht, dass alle Ihre Tests weiterhin $_
implizit verwenden und weniger Umschreiben erfordern. (Aber beachten Sie, dass andere spezielle Smart-Match-Funktionen nicht mehr funktionieren.)
Dies ist nur für das Umschreiben von Code, der bereits gegeben/wann verwendet. Um neuen Code zu schreiben, hat @hobbs die richtige Antwort.
Passen Sie auch auf, dass sich ein 'nächstes' innerhalb 'gegeben' anders als ein' nächstes 'innerhalb' für' verhält. –
Mit anderen Worten, die Empfehlung ist, zu dem Coding-Stil zurückzukehren, der vor der Einführung des 'given-while-default' verwendet wurde! ** Ich finde das sehr frustrierend, ** – lexu