将<或>操作符作为参数传递到函数中?

3

我的函数中有一个像这样的if()语句:

if(passedValue < staticValue)

但我需要能够传递参数来决定if表达式是否像上面那样,还是像下面那样:

if(passedValue > staticValue)

但是我实际上无法通过作为参数的 <> 运算符,因此我想知道最好的方法是什么?

另外,如果使用的语言很重要,那么它是 ActionScript 3.0。

谢谢!

4个回答

7

为什么不传递一个自定义比较函数,而不是像AS3中无法传递运算符?

function actualFunction(passedValue:Number, compareFunction:Function) {
    /* ... */

    if(compareFunction(passedValue, staticValue)) {
        /* ... Do something ... */
    }

    /* ... */
}

使用它的方式如下:

actualFunction(6, function(x:Number, y:Number) {
     return x > y;
});

或者:

actualFunction(6, function(x:Number, y:Number) {
     return x < y;
});

好的解决方案。或者,如果作者想将运算符作为字符串传递,他们可以使用它作为查找以检索正确的函数(从字典或类似位置)。这需要更多的设置,可以使用工厂进行简化,但会产生更清晰的代码。(即:不在每次调用时创建动态函数) - Tyler Egeto
(即:不在每次调用时创建动态函数)- Flash 优化函数为静态函数,因此没有性能损失。 - LiraNuna

1
为什么不将函数定义为以一个 bool 参数作为输入,并在调用函数时直接进行比较呢?
ExampleFunction(arg1, (passedValue > staticValue))

如果被调用者没有访问staticValue的权限,会怎样? - LiraNuna

0

您说得对,不能传递操作符。但是可以通过传递一个变量来指定要使用的操作符。

lessThan = true;
func(passedValue, lessThan); 

0

我不懂Actionscript,但你不能创建一个名为:

bool greaterThan = true;

如果它是真的,就执行 >,如果是假的就执行 < 吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接