代码之家  ›  专栏  ›  技术社区  ›  Ross Henderson

通过AS3中的引用更改var的值

  •  0
  • Ross Henderson  · 技术社区  · 15 年前

    我很肯定我想用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 可替代价值 要素 newValue , 不会改变。这是意料之中的,但完全不是我想要的,在这种情况下。

    对鲁比来说,这里也有一个类似的问题 Changing value of ruby variables/references

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

    如果是这样的话,这会让一些愚蠢的事情对我来说容易得多。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Patrick    15 年前

    不,函数不可能总是得到值而不是引用。但是,如果可以调用replaceValue,为什么不从函数返回新值:

    function replaceValue(element:*, newValue:String):String  
    { 
     // .. do your work
     return newValue;  
    }
    
    var variableToModify:String = "Hello";  
    variableToModify = replaceValue(variableToModify, "Goodbye");
    
    trace(variableToModify)
    

    如果您传递对象或类,则可以根据其名称将其修改为:

    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);