将函数定义为 var 的目的(在 class 中)?
The purpose of defining a function as a var (in a class)?
我正在读这个 answer: 但我不明白为什么有人会将该函数定义为 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;
}
我对所有内容都使用 classes。如果有人想传递 var
等,我可以理解它,但作为设置浮点精度的实用程序,我在这里看不到值。我看到的所有 related 个问题都与 JavaScript 有关。
我认为在 class 中是否正确,没有充分的理由将此函数定义为 var
?
这没有充分的理由,除非您想将此函数作为参数传递。
这只是写同样东西的另一种方式。
如果 var 是 class 的成员而不是方法中的局部函数,区别在于您可以覆盖每个对象中的函数以更改某些行为。
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 风格更清晰一点:是的,这个函数确实是本地的。功能上没有区别,两种方式都可以作为参数传递等等
我正在读这个 answer: 但我不明白为什么有人会将该函数定义为 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;
}
我对所有内容都使用 classes。如果有人想传递 var
等,我可以理解它,但作为设置浮点精度的实用程序,我在这里看不到值。我看到的所有 related 个问题都与 JavaScript 有关。
我认为在 class 中是否正确,没有充分的理由将此函数定义为 var
?
这没有充分的理由,除非您想将此函数作为参数传递。 这只是写同样东西的另一种方式。
如果 var 是 class 的成员而不是方法中的局部函数,区别在于您可以覆盖每个对象中的函数以更改某些行为。
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 风格更清晰一点:是的,这个函数确实是本地的。功能上没有区别,两种方式都可以作为参数传递等等