7 arguments keyword actionscript-3
可以使用关键字= value的关键字参数调用Python中的函数.例如,以下功能:
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
print "-- This parrot wouldn't", action,
print "if you put", voltage, "volts through it."
print "-- Lovely plumage, the", type
print "-- It's", state, "!"
Run Code Online (Sandbox Code Playgroud)
可以通过以下任何一种方式调用:
parrot(1000)
parrot(action = 'VOOOOOM', voltage = 1000000)
parrot('a thousand', state = 'pushing up the daisies')
parrot('a million', 'bereft of life', 'jump')
Run Code Online (Sandbox Code Playgroud)
ActionScript 3没有此功能.我怎样才能最好地效仿呢?
如果你陷入困境,它不会在编译时抛出任何错误,但你可以这样做:
public function awesomefunction(input:Object):void {
if (input.foo) trace("got foo");
if (input.bar) trace("got bar");
}
Run Code Online (Sandbox Code Playgroud)
然后在调用时这样做:
awesomefunction( { foo : 23, bar : 99 } );
Run Code Online (Sandbox Code Playgroud)
{}括号创建一个内联对象.以上代码的冗长版本可以这样写:
var obj:Object = new Object();
obj.foo = 23;
obj.bar = 99;
awesomefunction( obj );
Run Code Online (Sandbox Code Playgroud)
如果你给它一个数组:
awesomefunction( [23, 99 ] );
Run Code Online (Sandbox Code Playgroud)
([]是数组btw的简写)
索引可以像这样访问:
public function awesomefunction(input:Object):void {
if (input[0]) trace("got foo");
if (input[1]) trace("got bar");
}
Run Code Online (Sandbox Code Playgroud)
所以要把它全部带到你可以使用||的事实 operator返回首先计算为true的对象的值,而不仅仅是true:
public function awesomefunction(input:Object):void {
var foo:int = input.foo || input[0];
var bar:int = input.bar || input[1];
if (foo) trace("got foo:", foo);
if (bar) trace("got bar:", bar);
}
Run Code Online (Sandbox Code Playgroud)
因此,上述函数将为所有这三个调用提供相同的输出:
awesomefunction( { foo : 23, bar :55 } );
awesomefunction( { bar : 55, foo : 23 } );
awesomefunction( [ 23, 55 ] );
Run Code Online (Sandbox Code Playgroud)
但是这不允许你混合命名和编号,但你可以这样做:
awesomefunction( { foo : 23, 1 : 55 } );
Run Code Online (Sandbox Code Playgroud)
它不是很漂亮,但它有效!
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |