【问题标题】:actionscript3 function parameter modifier. Is it possible? [duplicate]actionscript3 函数参数修饰符。是否可以? [复制]
【发布时间】:2014-07-29 17:09:28
【问题描述】:
我试图搜索,但没有找到任何东西。我使用链接通过 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中做到吗?
【问题讨论】:
标签:
actionscript-3
flash
apache-flex
parameters
actionscript
【解决方案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();
【解决方案2】:
据我所知,您不能在 AS3 中执行此操作,而不像之前的海报所说的那样为原始变量分配返回值。如果传递的参数是原始数据类型(字符串、整数、数字、布尔值等),它将是一个副本而不是引用。所以在函数体中改变它不会在外面改变它。
function foo(r:String):void{
r += 'is text';
}
function bar():void{
var s:String = "text";
foo(s); // s == "text"
}
只有数组、对象等作为引用传递。因此,一种方法是操纵对象的属性。或者只使用返回值。