actionscript3函数参数修饰符。可能吗?

时间:2014-07-29 17:09:29

标签: actionscript-3 flash flex parameters actionscript

我试图搜索一下,但没找到任何东西。我使用链接通过C ++中的参数修改数据。例如,在C#中,我可以这样使用:

bool foo(ref string r)
{
    r+= " is text";
}

bool bar()
{
    string s = "text";
    foo(ref s); // and now s == "text is text"
}

是否可以在actionscript3中执行此操作?

2 个答案:

答案 0 :(得分:1)

你只能这样做:

function foo(r:String):String {
    return r += " is text";
}

function bar():void {
    var s1:String = "text";
    var s2:String = foo(s1);
    trace(s2); // text is text
}
bar();

为了说明MasterRoro所说的内容,object不属于原始数据类型且passed by reference的相同示例:

function foo(r:Object):void {
    r.x += " is text";
}

function bar():void {
     var s:Object = {x:"text"};
     foo(s);
     trace(s.x); // text is text
}
bar();

答案 1 :(得分:1)

据我所知,如果没有为原始变量指定返回值,就不能在AS3中执行此操作,就像上一张海报所说的那样。如果传递的参数是原始数据类型(string,int,number,bool等),则它将是副本而不是引用。因此,在函数体中更改它不会在外部改变它。

function foo(r:String):void{
   r += 'is text';
} 

function bar():void{
    var s:String = "text";
    foo(s);  // s == "text"
}

仅将数组,对象等作为引用传递。因此,执行此操作的方法是操纵对象的属性。或者只使用返回值。