Специальные функции actioncript для прогаммера c ++ - PullRequest
1 голос
/ 15 августа 2011

Я из мира C ++ и хочу сделать что-то простое с Actionscript 3.0.Ищите по этому сайту и в Google, и не нашли общепринятого способа сделать это.Я дам вам код C ++, аналогичный тому, что я пытаюсь сделать в Actionscript 3.0.

Передать по ссылке:

void somefunction (string &passvariable);

Создатьэкземпляр, глубокая копия:

string something;
string somethingelse;
something = "randomtext";
somethingelse = something;

Ответы [ 3 ]

4 голосов
/ 15 августа 2011

Передача по ссылке

Каждый объект передается по ссылке . Насколько я знаю, явных операторов & address of или * dereference нет. Actionscript - это язык более высокого уровня, чем этот.

Примитивные типы (а String являются примитивными - см. Ссылку) являются неизменяемыми в Actionscript, поэтому передача по значению / передача по ссылке фактически одинакова.

Глубокая копия / Экземпляр

ObjectUtil.clone / ObjectUtil.copy создаст иногда очень глубокие копии объектов, , если вы работаете во Flex . Я обычно не полагаюсь на это для чего-то глубокого, как бы то ни было. В большинстве случаев вам понадобится создать собственный метод стиля клон для создания глубокой копии.

Общий, гибкий клон метод можно найти здесь

0 голосов
/ 16 августа 2011

Правила для передачи в качестве ссылки отличаются для простых типов данных, таких как строка и число, чем для объектов и сложных типов данных.Если вы передаете строку в функцию, она создает копию, оставляя оригинал нетронутым.Таким образом, чтобы перейти по ссылке, попробуйте создать объект:

var str:Object = {string:"foo"};
        passByref(str);
        trace(str.string);

    private function passByref(str:Object):void 
    {
        str.string = str.string + "bar";
        trace("inside", str);
    }

Что касается глубокого клонирования объекта, это прекрасно работает:

package
{
    import flash.utils.ByteArray;

    public class DeepCopyUtil
    {
        public static function clone (source : Object) : *
        {
            var array : ByteArray = new ByteArray ();

            array.writeObject (source);
            array.position = 0;

            return array.readObject ();
        }

    }
}

Кредит, где кредит должен: http://cookbooks.adobe.com/post_How_to_create_deep_copies_of_objects_and_arrays-19261.html

0 голосов
/ 15 августа 2011

В ActionScript вы должны определить все вещи с помощью функции, var или const. Вы должны определить (возвращаемый тип) после имени переменной, например, var: String

Создание функции

function someFunction (var:String):void
{

}

Копировать строку

var something:String;
var somethingElse:String;
something = "randomtext";
somethingelse = something;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...