在AS3中更改var via引用的值

时间:2010-08-04 20:19:33

标签: actionscript-3 variables reference

我非常肯定我想做的事情是不可能使用ActionScript,但错误会很好。

我需要将变量引用传递给函数,并让函数更改变量的值。

因此,简化而不是完全正确的语法,如下所示:

function replaceValue(element:*, newValue:String):void  
{ 
    element = newValue;  
}

var variableToModify:String = "Hello";  
replaceValue(variableToModify, "Goodbye");

trace(variableToModify) // traces value of 'Hello', but want it to trace value of 'Goodbye'

当然,在replaceValue函数中,element是对fungibleValue的新引用(或者更确切地说,是对fungibleValue的值的新引用)。因此,当element设置为newValue的值时,fungibleValue不会更改。在这种情况下,这是预期但完全不是我想要的。

对于Ruby,这里有一个类似的问题Changing value of ruby variables/references

正如问题所指出的,Ruby有办法实现这一目标。但是在ActionScript中有任何方法吗?

如果是这样的话,那对我来说会变得更容易愚蠢。

1 个答案:

答案 0 :(得分:1)

不可能该功能总是得到值而不是参考。但是,如果您能够调用replaceValue,为什么不从函数中返回新值:

function replaceValue(element:*, newValue:String):String  
{ 
 // .. do your work
 return newValue;  
}

var variableToModify:String = "Hello";  
variableToModify = replaceValue(variableToModify, "Goodbye");

trace(variableToModify)

如果你传递一个对象或一个类,你可以根据他的名字修改一个fiels:

function replaceValue(base:Object, fieldName:String, newValue:String):void {
 // do your work
 base[fieldName] = newValue;
}

var o:Object={ variableToModify:"Hello" };
replaceValue(o, "variableToModify", "Goodbye");

trace(o.variableToModify);