as3 - выяснить тип переменной из пустой переменной - PullRequest
2 голосов
/ 27 мая 2011

Можно ли определить тип переменной, когда переменная не была создана?

Пример того, что я пытаюсь выполнить:

var foo:ExampleOne;
var bar:ExampleTwo;

var arr:Array = [foo, bar];

for each(var myVar:Object in arr)
{
    myClass = new getDefinitionByName( getQualifiedClassName( myVar ) ) // doesn't work
}

Ответы [ 4 ]

3 голосов
/ 27 мая 2011

Нет, потому что переменные являются ссылкой на объекты, которые не создаются в vm, пока вы не создадите их с помощью ключевого слова "new".Поэтому, пока вы не сделаете это, ссылки (foo / bar и т. Д.) Всегда будут нулевыми, независимо от того, какую операцию вы над ними выполняете.

1 голос
/ 27 мая 2011

Я не знаю, что вы хотите сделать, но вы можете использовать describeType:

package
{
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.utils.ByteArray;
    import flash.utils.describeType;
    import flash.utils.getDefinitionByName;


    public class TestTextfield extends Sprite
    {
        public var foo:TextField;
        public var bar:ByteArray;

        public function TestTextfield()
        {
            var arr:Array = ["foo", "bar"];

            for each(var myVar:String in arr)
            {
                var varClass : String = describeType(this)..variable.(@name == myVar).@type.toString();
                var myClass : * = new (getDefinitionByName(varClass) as Class)
            }
        }

    }
}
0 голосов
/ 27 мая 2011

Может быть, вы хотите сделать что-то подобное?

var a:Class = MyClassA; //put a reference to a Class object into 'a' variable
var b:Class = MyClassB;

var classes:Array = [a,b];

for each(var classObj:Class in classes){
  var objInstance : * = new classObj()
}
0 голосов
/ 27 мая 2011

Попробуйте использовать свойство "className".

Должно возвращаться "TextInput", "Button" и т. Д. ... в зависимости от случая

for each (var item:* in myArray)
{
    if(item.hasProperty('className'))
    {
        trace("item ["+i+"] is :" + item['className']);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...