当前位置:  开发笔记 > 编程语言 > 正文

有条不紊地改变"for循环"的方向?

如何解决《有条不紊地改变"for循环"的方向?》经验,为你挑选了2个好方法。

是否可以在ActionScript中有条件地更改for循环的方向?

例:

for(if(condition){var x = 0; x0; x--}){
  //do something
}

Matthew Flas.. 9

有趣的要求.保持for的一种方法是:

var start, loop_cond, inc; 
if(condition) 
{ 
    start = 0; 
    inc = 1; 
    loop_cond = function(){return x < number}; 
} 
else 
{ 
    start = number - 1; 
    inc = -1; 
    loop_cond = function(){return x >= 0}; 
} 
for(var x = start; loop_cond(); x += inc) 
{ 
    // do something
}

我们设置起始值,终止条件的函数,以及正或负增量.然后,我们只是调用函数并使用+=它来做增量或减量.



1> Matthew Flas..:

有趣的要求.保持for的一种方法是:

var start, loop_cond, inc; 
if(condition) 
{ 
    start = 0; 
    inc = 1; 
    loop_cond = function(){return x < number}; 
} 
else 
{ 
    start = number - 1; 
    inc = -1; 
    loop_cond = function(){return x >= 0}; 
} 
for(var x = start; loop_cond(); x += inc) 
{ 
    // do something
}

我们设置起始值,终止条件的函数,以及正或负增量.然后,我们只是调用函数并使用+=它来做增量或减量.



2> xscott..:

ActionScript具有三元运算符,因此您可以执行以下操作:

for (var x = cond ? 0 : number; cond ? x < number : x > 0; cond ? x++ : x--) {
}

但这非常难看.:-)

你可能还需要/想要在其中加入一些parens.我不确定运算符优先级.

您也可以考虑使用更高阶的函数.想象一下你有:

function forward (count, func) {
    for (var x = 0; x < count; x++) {
        func(x);
    }
}

function backward (count, func) {
    for (var x = count - 1; x >= 0; x--) {
        func(x);
    }
}

然后你可以这样做:

(condition ? forward : backward) (number, function (x) {
     // Your loop code goes here
})

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有