2011-11-24 67 views
4

有没有办法知道函数的一个实例多少参数可以在Flash?知道这些参数是否可选也是非常有用的。AS3知道有多少参数的函数需要

例如:

public function foo() : void        //would have 0 arguments 
public function bar(arg1 : Boolean, arg2 : int) : void  //would have 2 arguments 
public function jad(arg1 : Boolean, arg2 : int = 0) : void //would have 2 arguments with 1 being optional 

感谢

回答

13

是有:使用Function.length属性。 我只是检查了docs:它似乎并不虽然被那里提到。

trace(foo.length); //0 
trace(bar.length); //2 
trace(jad.length); //2 

注意有没有括号()函数名后。您需要Function对象的引用;添加大括号将执行该功能。

我不知道的方式以确定的一个参数是可选的,但。

编辑

...rest parameters什么?

function foo(...rest) {} 
function bar(parameter0, parameter1, ...rest) {} 

trace(foo.length); //0 
trace(bar.length); //2 

这是有道理的,因为没有办法知道将传递多少个参数。 注意,函数体中,你可以确切地知道有多少参数被传递,就像这样:

function foo(...rest) { 
    trace(rest.length); 
} 

感谢@felipemaia指出了这一点。

+0

什么是'函数foo(参数... args)'的行为? – felipemaia

+0

显然它返回0,无论你是否真的传递参数。我会编辑我的答案。感谢您指出这种情况。 – RIAstar

+0

请降低这个答案的人请澄清他认为是错的吗?也不由得注意到,[这个答案](http://stackoverflow.com/questions/9769718/clicked-swf-image-position-to-center-flex/9770402#9770402)粗略同时downvoted ... – RIAstar

相关问题