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. –
- 1. Was ist der Ersatz für jQuery.live
- 2. Was ist der Ersatz für grails.converters.deep.JSON
- 3. Was ist der Ersatz für ActionController :: Base.relative_url_root?
- 4. Was ist der Ersatz für REBASE.EXE?
- 5. Was ist der Ersatz für den Kinderselektor?
- 6. FilterDispatcher ist veraltet! - Was ist der Ersatz für FilterDispatcher?
- 7. Was ist der Ersatz für den Datastore Admin für GAE
- 8. Was ist der Ersatz für getFromLocationName() für IOS?
- 9. Was ist der empfohlene Hash-Algorithmus für gespeicherte Passwörter?
- 10. Was ist der empfohlene Maximalwert für join_buffer_size in mysql?
- 11. Was ist ein brauchbarer Ersatz für Searchlogic?
- 12. Was ist der Standard-Popup-Ersatz jetzt?
- 13. Crashlytics missbilligende logException() was ist der Ersatz?
- 14. Was ist der beste Ersatz für eine Galerie in Android?
- 15. Was ist der Rails 3 Ersatz für ActiveRecord :: Errors?
- 16. Laravel 4: Was ist der Ersatz für Asset :: add?
- 17. Was ist der Unity 2-Ersatz für <typeConfig />?
- 18. Was ist der Ersatz für die veraltete Suche (params [: ID])
- 19. Was ist der Ersatz "StringWithContentsOfURL" für Ziel C?
- 20. Was ist der beste Ersatz für FlowDocument in Silverlight?
- 21. Was ist der Jersey 2 Ersatz für ResourceContext.matchResource (URI)?
- 22. Was ist der Ersatz für die .value Variable in Javascript?
- 23. Was ist der Ersatz für Resteasy ProxyFactory Klasse
- 24. Was ist der Ersatz für DataTrigger in Silverlight
- 25. Was ist der Ersatz für :: Schatten und/tief /?
- 26. Was ist der richtige Ersatz für doLayout in ExtJS 6
- 27. Was ist Perls Standard-String-Vergleichsreihenfolge?
- 28. Empfohlene jQuery Vorlagen für 2012?
- 29. Empfohlene Befehlszeilenoptionen für Clang
- 30. Was ist die empfohlene Bcrypt C-Implementierung?
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