假设我有一个稍微复杂的 for 循环,用于不同的情况。有没有办法提取那个forloop并且仍然保持代码可读?
例如:
private function bar(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingA();
}
}
}
private function foo(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingB();
}
}
}
我会这样做/回答问题的方式是写这样的东西:
private function loopFunction(callback:Function){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
callback();
}
}
}
private function bar(){
loopFunction(doSomethingA);
}
private function foo(){
loopFunction(doSomethingB);
}
但是我发现这种方法有时会使代码变得难以阅读,因为您不太确定谁在什么时候做什么。特别是如果传入的函数来自另一个类。有一个更好的方法吗?
此解决方案可能不起作用的另一个原因是您是否需要将不同的参数传递给回调函数。例如。
private function bar(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingA(arrayA);
}
}
}
private function foo(){
for(i=0;i<arrayA.length;i++){
if(arrayA[i].someVar == foobar){
doSomethingB(i);
}
}
}