Ekhm, to jest to! ...Jak mogę znaleźć typ var/name w Actionscript3?
Odpowiedz
Funkcja jest wywoływana typeof(). http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/operators.html#typeof
Jeśli pamięć służy mi rację, metoda flash.utils.describeType ręce, dokument XML z wszystkich odbitych typeinfo przedmiotu/rodzaju.
Rzeczywiście: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#describeType%28%29
O tak, to w rzeczywistości zbyt wiele informacji o typach. Miałem nadzieję, że obejmuje to również rzeczywiste wartości nieruchomości. No cóż, dobrze o tym wiedzieć. – Pat
flash.utils.getQualifiedClassName(...)
Możesz przekazać dowolną wartość ActionScript do tej funkcji, aby uzyskać ciąg zawierający jej pełną nazwę klasy.
Operator is
jest do rozwiązania data:
var mySprite:Sprite = new Sprite();
trace(mySprite is Sprite); // true
To jednak nie odpowiada na pytanie, pytanie brzmi: "biorąc pod uwagę zmienną, jak się dowiem, jaki jest jej typ", a nie "biorąc pod uwagę zmienną, jak stwierdzić, czy jest to dany typ". –
Jeśli użytkownik zna możliwe typy var lub chce dowiedzieć się, czy var jest lub nie jest szczególnym rodzajem, to rozwiązanie będzie działać. Niektóre inne odpowiedzi odnoszą się do przestarzałych funkcji (np. Typeof). –
Jeśli potrzebujesz tylko najbardziej fundamentalną opis to typ, a następnie można użyć operatora typeof
, tak jak poniżej:
var foo:String = "test";
trace(typeof foo);
// string
Jest to wygodne, ale ma tę wadę. Że jest to zawsze daje typ bazowy zmiennej, na przykład:
var foo:Array = ["A","B","C","D"];
trace(typeof foo);
//object
var bar:int = 5;
trace(typeof bar);
//number
var hummer:Car = new Car();
trace(typeof hummer);
//Vehicle
które są zarówno technicznie w porządku, ale nie może być to, czego szukasz.
Jeśli chcesz bardziej konkretny typ (tj Array
, String
itd.), To trzeba użyć nieco bardziej skomplikowany getQualifiedClassName()
funkcji z pakietu flash.utils
:
import flash.utils.getQualifiedClassName;
var foo:Array = ["A","B","C","D"];
trace(getQualifiedClassName(foo));
//Array
var bar:int = 5;
trace(getQualifiedClassName(bar));
//int
var hummer:Car = new Car();
trace(getQualifiedClassName(hummer));
//Car
Oddaje ci "obiekt" dla wszystkich z wyjątkiem 5 predefiniowanych typów. – spender