Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Экземпляр как параметр функции (http://www.flasher.ru/forum/showthread.php?t=184419)

wisconsin 18.09.2012 18:54

Экземпляр как параметр функции
 
если передать экземпляр как параметр в функцию, то в виде чего он будет существовать?

этот пример как-то связан с ответом на мой вопрос

Код AS3:

function example (class:Object) 
{
class.method();
}
 
Main.example(new Class());


bav 18.09.2012 18:58

В виде ссылки на экземпляр класса. В случае простых объектов – в виде копии экземпляра.
P.S. Вы не в викторину играете?

wisconsin 18.09.2012 19:11

Цитата:

Сообщение от bav (Сообщение 1096398)
В виде ссылки на экземпляр класса. В случае простых объектов – в виде копии экземпляра.
P.S. Вы не в викторину играете?

обычно передается значение, например 2 или "строка"
а что передают экземпляры с не примитивным типом данных? ведь они не имеют значени


не викторина, я просто удаляю пробелы

bav 18.09.2012 19:13

Оператор new возвращает ссылку на вновь созданный экземпляр класса.
Код AS3:

Main.example(new Class());

Здесь в функцию example и передается эта ссылка.

Frost47rus 18.09.2012 21:36

Код AS3:

public class SomeClass {
        public function SomeClass() {
 
        }
 
        public function someMethod():void {
                trace('ALL YOUR BASE ARE BELONG TO US');
        }
}
 
public class Main {
        public function Main() {
                example(new SomeClass());
        }
 
        public function example(e:SomeClass):void {
                e.someMethod(); //ALL YOUR BASE ARE BELONG TO US
        }
}


artcraft 18.09.2012 22:10

Боюсь что могу этим добавить вам каши в голове, но считаю нужным упомянуть что

Экземпляр класса это объект, Класс это тоже объект, и функция это объект

все объекты находится в памяти компьютера, их можно создавать и менять, но вот передавать их невозможно...
передавать можно только ссылки на эти объекты

немножко улучшил пример:
Код AS3:

public class SomeClass {
        public function SomeClass() { }
        public function someMethod():void { trace('ALL YOUR BASE ARE BELONG TO US'); }
}
 
public class Main {
        public function Main() {
 
                var something:SomeClass = new SomeClass(); //переменная something это ссылка на объект класса SomeClass
 
                example1(something); // передаём в качесве параметра ссылку на объект
                example2(SomeClass); // передаём в качесве параметра ccылку на класс
                example3(something.someMethod); // передаём в качесве параметра ccылку метод объекта класса SomeClass
        }
 
        public function example1(something:SomeClass):void {
                something.someMethod(); //ALL YOUR BASE ARE BELONG TO US
        }
 
        public function example2(сlazz:Class):void {
                var something:SomeClass = new clazz(); //создаём объект
                something.someMethod(); //ALL YOUR BASE ARE BELONG TO US
        }
 
        public function example3(fn:Function):void {
                fn(); //ALL YOUR BASE ARE BELONG TO US
        }
}


wisconsin 18.09.2012 22:39

а если созданный объект не инициализирован, то к нему нельзя будет обратиться(ссылаться), и он будет бесполезно занимать память?

з.ы. примеры шикарные...

Krusty 18.09.2012 22:45

Цитата:

Сообщение от wisconsin (Сообщение 1096463)
а если созданный объект не инициализирован, то к нему нельзя будет обратиться(ссылаться), и он будет бесполезно занимать память?

з.ы. примеры шикарные...

Объект не может быть не "инициализирован". Иначе его тупо нет. Создание объекта-это вызов конструктора его класса.
Вы, кажется, путаете объект и класс.

artcraft 18.09.2012 22:46

если на созданный объект нету никаких ссылок то он будет удалён из памяти сборщиком мусора


Часовой пояс GMT +4, время: 22:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.