Есть ли способ, в As3, изменить переменную класса внутри функции, если она передана в качестве параметра? - PullRequest
0 голосов
/ 09 августа 2010

Вот простой пример того, что я имею в виду:

private var ex:String="day";

......

closeWindows(ex);
trace(ex);//I would like it to trace "night"

......

//this can be in another class, we assume that the "ex" variable can't be accessed directly
private function closeWindows(context:String):void {
  context = "night"
}

Каким-то образом мне нужно передать ссылку, а не само значение в метод closeWindows.

Любая помощь, это высоко ценится. Благодарю.

Ответы [ 3 ]

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

Возможно, вы уже знаете об этом, но в ActionScript параметры всегда передаются по значению. Поэтому то, что вы хотите сделать, невозможно, если вы не используете специальную оболочку (объект, массив или что-то еще).

Но нельзя ли просто вернуть и переназначить новую строку?

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

AS3, к сожалению, не поддерживает передачу примитивов по ссылке.Итак, вы правы, одно из типичных решений - использовать какую-то оболочку для примитива, например, в этот вопрос .

0 голосов
/ 09 августа 2010

Спасибо вам обоим за ответы, в конце концов кажется, что нет способа передать переменную как ссылку, а не как значение. Тем не менее, вы можете передать функцию в качестве ссылки, так что вот мой маленький взломать get / set.

private var ex:String="day";

                    ......

                    closeWindows(setEx);
                    trace(getEx());

                    ......


                    private function getEx():String {
                        return ex;
                    }

                    private function setEx(value:String):String {
                        ex = value;
                    }


                    private function closeWindows(context:Function):void {
                        context.call(null, "night");
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...