将函数定义为var(在类中)的目的是什么?

时间:2015-01-24 22:48:07

标签: actionscript-3

我正在阅读此answerhttps://stackoverflow.com/a/632914/840992并且我不明白为什么将该函数定义为var

var setPrecision:Function = function(number:Number, precision:int) {
 precision = Math.pow(10, precision);
 return Math.round(number * precision)/precision;
}

var number:Number = 10.98813311;
trace(setPrecision(number,1)); //Result is 10.9
trace(setPrecision(number,2)); //Result is 10.98
trace(setPrecision(number,3)); //Result is 10.988 and so on

而不仅仅是一个功能:

public function setPrecision(number:Number, precision:int) {
    precision = Math.pow(10, precision);
    return Math.round(number * precision)/precision;
}

我正在使用课程。我可以理解,如果一个人想要传递var等等,但只是一个实用程序来设置浮点精度,我没有看到这里的值。我见过的所有related个问题都与JavaScript有关。

我是否认为在课堂上没有充分理由将此功能定义为var

2 个答案:

答案 0 :(得分:0)

没有充分的理由,除非您想将此功能作为参数传递。 这只是写同样事物的另一种方式。

答案 1 :(得分:0)

如果var是类的成员而不是方法中的局部函数,则差异在于您可以覆盖每个对象中的函数以更改某些行为。

public class Foo {
    /**
    * By default we'll square the value to prepare it
    */
    public var prepareSomething:Function = function(n:Number):Number {
        return n * n;
    }

    public function doSomething(n:Number) {
        var x = this.prepareSomething(n);
        // do something with x
    }
}

现在你可以拥有这样的东西:

var foo = new Foo();
// we prefer to have n cubed for preparation here...
f.prepareSomething = function(n:Number):Number {
    return n * n * n;
}
foo.doSomething(123.45);

通常这不是一个非常好的设计理念,但在某些时候它可能会派上用场。

我不知道在定义为var时是否会以某种方式处理本地函数。分配或解除分配可能存在差异。

否则,人们可能会发现var样式更清晰一点:是的,这个函数实际上是本地的。功能上没有区别,两种方式都可以作为参数传递等。