我正在阅读此answer:https://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
?
答案 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样式更清晰一点:是的,这个函数实际上是本地的。功能上没有区别,两种方式都可以作为参数传递等。