Изменение значения переменной через ссылку в AS3 - PullRequest
0 голосов
/ 05 августа 2010

Я довольно уверен, что то, что я хочу сделать, невозможно с 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, здесь Изменение значения переменных / ссылок ruby ​​

Как вопросуказывает, что у Руби есть способ сделать это.НО есть ли любой способ сделать это в ActionScript?

Если это так, то мне будет намного проще сделать что-то глупое.

1 Ответ

1 голос
/ 05 августа 2010

Нет, невозможно, чтобы функция всегда получала значение, а не ссылку. Но если вы можете вызвать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...