Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Array is Object (http://www.flasher.ru/forum/showthread.php?t=174394)

Jitakuzu 24.01.2012 14:04

Array is Object
 
Доброго времени суток.

Вопрос заключается в следующем: можно ли как то узнать, что полученный на вход функции объект именно Object, а не Array?

Код AS3:

function funcName (input:*):void
{
if (input is Array) {
//Превращаем input массив
} else if (input is Object) {
//Превращаем input в словарь
} else {
throw new Error();
}
}

Так как Array наследуется от Object, то поданный на вход метода Object проходит условие if (input is Array), что приводит к ошибке.
Как понять что полученный объект именно Array, а не Object?

Genzo 24.01.2012 14:29

Все что есть в AS3.0 является Object.
проверяйте
Код AS3:

typeof(input) === "array"


silin 24.01.2012 14:31

>>поданный на вход метода Object проходит условие if (input is Array)
это не может быть, описка видимо
Код AS3:

trace( "Object is Array : " + (new Object() is Array));// false

а вообще можно так с типами разобраться
Код AS3:

private function funcName(input:*):void
{
        var inputType:Class = Object(input).constructor;
        //trace( "inputType : " + inputType );
        switch(inputType)
        {
                case Array:
                        trace( "Array");
                        return;
                case Object:
                        trace( "Object");
                        return;
                default:
                        trace( "Error");
 
        }
}


GBee 24.01.2012 14:32

Код AS3:

if (input is Array)

Должно работать. Правда не знаю, если инпут=нулл. Автор ведь не сказал, к какой ошибке приводит.

Jitakuzu 24.01.2012 14:58

Ну да, я опечатался. Поданный на вход Array проходит условие if (input is Object), что приводит к ошибке.
Спасибо за подсказки, попробую как написали.

Добавлено через 9 минут
Посмотрел документацию по typeOf. Проблем в том, что typeOf для Array возвращает object.

Jewelz 24.01.2012 15:23

а чем не устроил вариант silin'a ?

Jitakuzu 24.01.2012 15:37

все получилось, как silin написал. я сначала, просто. не через switch, а через if (inputType is Array), что приводило к старой ошибке. Заменил is на == и все получилось. Спасибо.


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

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