for(var i = a; i<b; i++){ ... viel Code ... }for(var i = a; i>b; i--){ ... viel Code ... }if(a<b){
for(var i = a; i>b; i--){ ... viel Code ... }
} else{
for(var i = a; i<b; i++){ ... viel Code ... }
}|
|
|
Ich glaube es wäre besser wenn du dein Problem, oder dein Ziel genauer beschreiben könntest, denn ich wette, dass es da eine elegantere Lösung gibt als eine dynamische Schleife. Die sind nicht ohne Grund sehr hässlich ;-)
– bigbasti 20.02.2012
|
bool isReverse = ...;
int inc = isReverse ? -1 : 1;
for(var i = isReverse ? a : 0; isReverse ? i>b : i<b; i += inc){ ... viel Code ... }
Action<int> body = i => { ... viel Code ... }
if(a<b){
for(var i = a; i>b; i--) body (i);
} else{
for(var i = a; i<b; i++) body (i);
}|
|
for (var i = a; i<b?i<b:i>b; i=i<b?++i:--i)
{
// viel Code
}
|
|
function biDir() {
var ps = [
[-11, -11], [-11, -9], [-9, -11], [-2, 2], [0, 0]
, [1, 3], [3, 1], [9, 8], [8, 8], [8, 9]
];
for (var p = 0; p < ps.length; ++p) {
var a = ps[p][0];
var b = ps[p][1];
var step = 1;
if (a > b) {
step = -1;
}
WScript.Stdout.Write(a + " .. " + b + ":");
b += step;
for(var i = a; i != b; i += step) {
WScript.Stdout.Write( " " + i );
}
WScript.Stdout.WriteLine();
}
}
biDir();
-------- Ausgabe ----------
cscript forum.js
-11 .. -11: -11
-11 .. -9: -11 -10 -9
-9 .. -11: -9 -10 -11
-2 .. 2: -2 -1 0 1 2
0 .. 0: 0
1 .. 3: 1 2 3
3 .. 1: 3 2 1
9 .. 8: 9 8
8 .. 8: 8
8 .. 9: 8 9
|
|
|
Es mit != zu machen ist natürlich auch ne schlaue Idee. Da spart man sich das umdrehen des >
– Pascal 05.02.2011
|
|
|
|
Ich habe übersehen, dass es um flash geht. Glaube, ihr habt keine delegates/Funktionszeiger/Closures, so dass das 2te Beispiel eh nicht geht.
– alexander 04.02.2011
|
||
| 2 |