| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
| magic switch
hallo zusammen, 'switch' ist nicht das, was man erwartet, oder ? Warum werden ab einer erfüllten Bedingung die weiteren cases ausgeführt ? Welche Gründe gibt es für dieses Verhalten ? ActionScript:
Das es so ist, wie es ist sehe ich :o) Aber woher kommt so eine seltsame Interpretation... |
| | |
| | #2 (permalink) |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
|
Dafür gibt es break. mfg r.
__________________ Ralf Bokelberg™ - Flex & Flash Consulting |
| | |
| | #4 (permalink) |
| zeitreisender Registriert seit: Aug 2001 Ort: Hannover
Beiträge: 1.577
|
den sinn dieses verhaltens habe ich auch noch nie verstanden. dafür ist es wesentlich schneller als das if/else if konstrukt.
__________________ Website: www.thomas-vogel.de |
| | |
| | #5 (permalink) |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
|
@emax: Bei mir ist das if schneller. Das wundert mich allerdings auch, denn ich habe im Hinterkopf, dass beide zum gleichen Bytecode übersetzt werden. ActionScript:
@andre: Ja, wieso ? Der Grund für dieses Verhalten ist das fehlende break. Oder fragst du nach dem Sinn dieses Verhaltens ? Der Sinn könnte darin liegen, dass man das Verhalten für verschiedene Fälle nicht immer wieder kopieren muss. mfg r.
__________________ Ralf Bokelberg™ - Flex & Flash Consulting |
| | |
| | #6 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
@bokel: Genau, es ging mir um den Sinn :o) Das ist einfach unlogisch und sprachlich nicht nachzuvollziehen. Für mich muss ein case wahr sein, damit er ausgeführt wird und nicht, wenn ein case vorher wahr war... |
| | |
| | #7 (permalink) |
| zeitreisender Registriert seit: Aug 2001 Ort: Hannover
Beiträge: 1.577
|
stimmt, es nimmt sich nix. mal ist if schneller, mal switch. komisch, habe für die 4gewinnt ki auch benchmarks gemacht und irgendwie rausgelesen, daß switch schneller wäre.
__________________ Website: www.thomas-vogel.de |
| | |
| | #8 (permalink) |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
|
@andre Genau dieses Verhalten bekommst du ja mit break hin. Durch das fehlende break kannst du mehrere Blöcke zu einem zusammenfassen. ActionScript:
Wenn es break nicht gäbe, müsstest du den Code vervielfältigen. ActionScript:
Ziemlich unpraktisch. mfg r.
__________________ Ralf Bokelberg™ - Flex & Flash Consulting |
| | |
| | #9 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Ja, genau. Ziemlich unpraktisch. Wann brauche ich den im normalen Leben eine solche Interpretation von 'case' ? Dein Beispiel überzeugt mich nicht. Vieleicht liegt es nur daran, dass du es einfach hinnimmst und es benutzt! Mir kommt es immer ein wenig hoch bei solchen Ungereimtheiten... |
| | |
| | #10 (permalink) |
| LastActionScriptHero Registriert seit: Apr 2002
Beiträge: 572
|
Diese Skripte machen das gleiche ActionScript:
ActionScript:
__________________ All your AS are belong to us! haha! Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd! |
| | |
| | #11 (permalink) |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
|
Dann bedank dich mal bei Kernighan/Ritchie . Ich schätze switch ist einfach nur ein leicht verkleidetes Assemblerkonstrukt, an dem dann nie mehr jemand was geändert hat (ausser Wirth). Wird eh nur selten benötigt. Während das Verhalten von break ja noch dokumentiert ist, gibt es noch zwei kleine implemementationsabhängige Fallen, die nicht so offensichtlich sind: ActionScript:
Jetzt alle: ärgern, ärgern ![]() mfg r.
__________________ Ralf Bokelberg™ - Flex & Flash Consulting |
| | |
| | #12 (permalink) |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
|
@k7c4: Genau, mit break ist man einfach flexibler, ohne dass es mehr kostet. mfg r.
__________________ Ralf Bokelberg™ - Flex & Flash Consulting |
| | |
| | #13 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Mag sein. Ich hätte es anders gebraucht, aber das ging eh nicht... Ich haue es mal hier rein, sollte jemand noch ein paar gute Ideen haben, kann Bokel vieleicht den Thread splitten. Ich suche einen Ansatz, um in einem 2D Array nach eingeschalteten Bits abzufragen. Erst das Script dann die Erklärung: ActionScript:
Der Witz ist ja bei Tilemap basierten Spielen, dass ich einige Eigenschaften eines Tiles bequem als Bits ein- und ausschalten kann. Dabei können ja auch 2 oder mehr Bits aktiviert sein. zB. Der Spieler bekommt an einer Stelle Punkte und es weht ein Wind von rechts.... Jetzt suche ich nach einer eleganten Möglichkeit Bits auszulesen. Bis jetzt mache ich das immer so: ActionScript:
Der OOP Ansatz wäre schön, aber auch langsamer. |
| | |
| | #14 (permalink) |
| helpQLODhelp Registriert seit: Feb 2002 Ort: Köln
Beiträge: 8.505
|
Wenn du mich fragst, ist das der klassische Fall, in dem OOP schneller als die herkömmliche Programmierung ist. Anstatt einer Menge von Bits würde ich eine Liste von Methoden benutzen, die du dann direkt ausführen kannst. Oder ist die Umwandlung in Funktionen schon so teuer, dass es sich nicht lohnt ? mfg r.
__________________ Ralf Bokelberg™ - Flex & Flash Consulting |
| | |
| | #15 (permalink) | |
| LastActionScriptHero Registriert seit: Apr 2002
Beiträge: 572
| Zitat:
ActionScript:
denn (bit & 2) kann sowieso nur 2 oder 0 sein ebenso wie bit & 4 nur 4 oder 0 sein kann, und da 0 zu false wird und alles andere zu true... Oder so, dann weisst Du immer, welches Bit gemeint ist ActionScript:
ActionScript:
Edit: Außerdem denke ich, dass Du, wenn Du diese Abfrage so machen willst, Deine Bit-Belegung etwas undurchsichtig/unlogisch angelegt hast, denn normalerweise müsste es so gehen. ActionScript:
__________________ All your AS are belong to us! haha! Beweise heute Deine Tierliebe: Schlage nie ein totes Pferd! Geändert von k7c4 (30-06-2003 um 14:09 Uhr) | |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |