Einzelnen Beitrag anzeigen

MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
532 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Dynamischer Methodenaufruf

  Alt 21. Apr 2018, 10:48
Der enum erfüllt einen ähnlichen Zweck im Regelfall. Die Wahrnehmung stimmt schon, sowie das Beispiel geschrieben wurde.

Der String selbst ist eine Bag mit in der die Reihenfolge ein Rolle spielt. Im CASE selbst würde eine Stringkonstante geprüft.

Ein Programm kann nicht lernen und liefert bei selben Input immer den selben Output. Das 'Wissen' und die Fähigkeiten des Programms erweiterst du als Programmieren. Sonst ist es kein Programm.

Zwei Beispiele für die Implementierung des Case Statements
Überlegung in Pascal
C/C++

usw ...

Scripts sind keine Programme. Scripting reflektiert eher höhere Änderungsraten. Weswegen du diese eher dynamischeren CASE Konstrukte eher in 4GL und Scripting Umgebungen findest. DB Umfeld.

In Python werden Dictionaries genommen. In C# erfolgt die Umsetzung auch im Dictionary.

Wir machten auf der Uni in Compilerbau noch zwei Implementierungen von CASE und heute wuchert das Thema. (Wenn mit nicht alles täuscht mit Fädelungsliste oder nicht (ob mich richtig erinnere).

--

Wenn du ein Serverprozess jahrelang laufen hast kannst du auch hergehen und die Sprungaddressen nach Aufrufhäufigkeit eher im Vorfeld ansiedeln usw...

Kaum eine Änderung über Jahre ist auch wieder ein anderer Zugang, wobei sich die Änderung einschleicht.

---

Die Realisierung solcher Fragen als 'CASE' oder wie auch immer hängt eben an der Form wie eine Änderung implementiert wird und wie oft. Klarerweise kann Implementierung für die Wahl schöner tauschen. Eine der schnellsten Umsetzung in C# war einmal ein Funktionsaufrauf mit Übergabeparameter ein Character 1:1 mit IFs zurückgemapped auf einen Integer.


Außerdem funktioniert case nicht mit Strings.
Du hast natürlich mehr als Recht, ist ja kein Ordinaler Typ

Geändert von MichaelT (21. Apr 2018 um 11:00 Uhr)
  Mit Zitat antworten Zitat