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

Freeman 25.07.2015 17:27

Класс и Экземпляр, разность типов
 
Здравствуйте.

Сепарирую передаваемое значение:
Код AS3:

public   function set subject(obj:*):void
                {
                if(obj==null) {
                    childsLayer.removeChild(icoObject);
                    icoObject=null;
                } else {
                    if(obj as Class) {
                        if(icoObject != null){childsLayer.removeChild(icoObject);}
                        icoObject=new obj();}
                    if(obj as Object) {
                        if(icoObject != null){childsLayer.removeChild(icoObject);}
                        icoObject=obj;}}
                Redraw();
            }

Тем самым хочу отсеять экземпляр созданный с new и просто класс:

Код AS3:

btn1.subject = new ccb();
btn1.subject = ccb;

Но ничего не выходит, они все являются Object.

Как бы отсепарировать два аргумента подобным образом?

caseyryan 25.07.2015 18:24

Потому что предлог не правильный использован. As - это как, а is - (есть) третье лицо, единственное число от быть
Код AS3:

package {
        import flash.display.Sprite;
 
        public class TypeChecker extends Sprite {
 
                public function TypeChecker() {
                        checkType(Sprite); // это класс
                        checkType(new Sprite()); // это экземпляр
                }
                private function checkType(obj:*):void {
                        if (obj is Class) {
                                trace("это класс");
                        } else if (obj is Object) {
                                trace("это экземпляр");
                        }
                }
        }
 
}


ZackMercury 25.07.2015 18:43

is = является, я так перевожу обычно.

caseyryan 25.07.2015 18:55

Вложений: 1
Цитата:

Сообщение от ZackMercury (Сообщение 1185242)
is = является, я так перевожу обычно.

Не нужно изобретать велосипед

ZackMercury 25.07.2015 19:10

Ох, да хоть три таблички, всё равно является, тем более в отношении классов.
Не мне ли вам говорить, что иногда он вообще переводится в форме " - это"

Неужели вы читаете "если obj есть Apple(яблоко), то"?
Всегда резало слух в переводах - дословная фразировка.

caseyryan 25.07.2015 19:26

Мы тут оффтопим, но технические термины (как в этом случае) лучше переводить дословно. Это не художественный перевод.
Цитата:

Неужели вы читаете "если obj есть Apple(яблоко), то"?
Это хорошая привычка для себя.

udaaff 25.07.2015 21:03

А "Является" не является дословным переводом "is" в данном контексте? Почему именно "есть"? Есть = является. И, кстати, Class is Object = true.

caseyryan 25.07.2015 21:09

Цитата:

И, кстати, Class is Object = true.
Да. Но Object is Class = false; Поэтому проверку на Class я и написал первой

udaaff 25.07.2015 21:12

Это я к тому, что is Object не гарантирует наличие некоего экземпляра созданного с помощью new.

caseyryan 25.07.2015 21:19

Цитата:

Это я к тому, что is Object не гарантирует наличие некоего экземпляра созданного с помощью new.
Ну это понятно, но задачу ТС данный код выполняет. Там бы конечно можно еще ввести проверку typeof, но, я думаю, и так сойдет


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

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