PDA

View Full Version : switch-Struktur



Elchi
31-10-2012, 11:41
Es wäre echt SEHR hilfreich mal eine switch-Struktur, wie auch aus anderen Programmiersprachen bekannt, einzubauen:



switch(variable)
{
case a:
tuwas();
break;
case b:
tuwasanderes();
break;
default:
tunochwasanderes();
}


Ich bedanke mich im Voraus bei dem Admin, der sich mal kurz darum kümmern wird

lg
Elchi

four
06-11-2012, 19:27
das kannste auch mit "if else" machen



if(variable=a) {
tuwas();
} elseif(variable=b) {
tuwasanderes();
} else {
tunochwasanderes();
}

Elchi
07-11-2012, 17:36
kann man. Aber

1. macht das den Code unübersichtlich und

2. es ist auf Laufzeitebene langsamer als switch

lg
Elchi

four
08-11-2012, 01:32
es ist nicht langsamer
switch case ist nur ein spezialfall einer if else verschachtelung (s.o.)
intern ist ein switch case nix anderes als ein if else
es wird nur anders dargestellt um es übersichtlicher zumachen

es ist nur eine komfort-/übersichtssache die dann von vll 20-30 scriptproggern in stne vll nur 5 oder weniger nutzen und das auch nur selten
und das obwohl man es mit vorhandenen mitteln(if else) genauso lösen
und dafür sollen die progger den scriptparser umschreiben?
ich denk mal es wäre etwas zu umständlich/zeitintensiv den eh schon verbuggten scriptparser umzuschreiben

g
four

General Jack O'Neill
08-11-2012, 02:06
Doch, ist normalerweise schneller, da compiler switch-case-anweisungen in eine hashtable übersetzen können wenn viele cases definiert sind, über die schneller zu den Sprunganweisungen gelangt werden kann.
If - else müssen normalerweise tatsächlich Fall für Fall geprüft werden, was bei vielen Anweisungen potentiell wesentlich länger dauert, da der Compiler meist nicht davon ausgehen kann, dass der Wert, der verglichen wird sich nicht zwischen den Vergleichen ändert und sich daher mit dem optimieren eher schwer tut...
Hängt dann aber auch vom jeweiligen Fall ab, wenn zu 99% einer der ersten 2-3 von 20 Vergleiche stimmen würde wäre ein if-else (durchschnittlich) meist schneller als ein optimierter switch case...

In der STNE-Scriptengine dürfte das aber eher zu vernachlässigen sein...
Sollte ein Progger einmal zu wenig anderes zu tun haben könnten wir es einbauen, momentan steht aber leider noch viel anderes höher auf der ToDO