Форум 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=149121)

Dukobpa3 19.01.2011 20:24

Цитата:

Оператор [] будет работать в таком случаи?
Будет, код рабочий.
Только с одним условием, оператор new использовать обязательно. Неявная инстанциация как в случае с массивом не получится.

BlooDHounD 19.01.2011 21:12

@Dukobpa3, что такое "неявная инстанциация"?

Dukobpa3 19.01.2011 21:14

хз))) сам придумал.

Короче инстанциировать в любом случае надо руками, это всё что я хотел сказать.

semenyakinVS 19.01.2011 21:22

Не... Я про new понял.

А как Flash догадается привести к типу Array? Если у нас, например, класс наследовал бы другой класс без индексатора, как бы себя повёл код:

Код AS3:

//class smth extends withoutIndexer
 
var test:smth =new smth();
 
smth[1] = 10;

Вот такое - как сработает?

Dukobpa3 19.01.2011 21:29

Если класс динамик, то создаст поле с именем указанным в скобочках
Только не знаю как оно себя поведет если будет число, но во всяком случае если динамик классу сделать:

Код AS3:

smth["something"] = 10;

То у класса появится поле с именем something и значением 10. (В кавычках - значит строка)

Ну а если класс не динамик, будет материться на невозможность создать поле в статическом классе.

Добавлено через 2 минуты
Собственно поэтому класс расширяющий Array у нас динамический, ибо ему поля постоянно новые добавляются, с индексами.

zhoran 19.01.2011 21:45

Цитата:

Сообщение от Dukobpa3 (Сообщение 965997)
Если класс динамик, то создаст поле с именем указанным в скобочках
Только не знаю как оно себя поведет если будет число...

Видимо приведет число к строке и создаст свойство, и [] видимо тоже приводит к строке, т.к.
Код AS3:

var obj:Object = new Object;
 
obj[1] = 2;
trace(obj[1]); // дает 2
trace(obj["1"]); // тоже дает 2


semenyakinVS 19.01.2011 23:42

Цитата:

Сообщение от Dukobpa3 (Сообщение 965997)
Ну а если класс не динамик, будет материться на невозможность создать поле в статическом классе.

Ух ты!.. А как делать статические в таком смысле классы? Там какое-то слово-модификатор перед классом?

И какая от них польза? Даёт прирост оптимизации?

Dukobpa3 20.01.2011 00:05

Блин, учите матчасть, это же основы....
Тут в этом разделе есть ссылки на хелпы, в том числе и на русский, который собственно я и читал некоторое время назад...

Статические классы по умолчанию, для динамик класса нужно слово "dynamic" указывать.
Кроме динамика есть еще три вида классов. Это и много другое можно прочесть в упомянутых мануалах, не ленитесь.


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

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