我非常肯定我想做的事情是不可能使用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中有任何方法吗?
如果是这样的话,那对我来说会变得更容易愚蠢。
答案 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);