我试图搜索一下,但没找到任何东西。我使用链接通过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中执行此操作?
答案 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"
}
仅将数组,对象等作为引用传递。因此,执行此操作的方法是操纵对象的属性。或者只使用返回值。