I think there is a conceptual distinction between the runtime type of an AS3 value and the compile-time type of a var or parameter that holds such a value.
The 'is' operator works on values. A value like 5 'is' both an int, a uint, and a Number because it is a legal value in the set of possible values for each of these types. But I would expect a var declared as var u:uint; to report itself via describeType() as a uint, just like int and Number do. It seems like a bug that it doesn't. Gordon Smith Adobe Flex SDK Team ________________________________ From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Paul Whitelock Sent: Thursday, May 15, 2008 3:59 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] Re: How to tell if variable is an int, uint, or a Number? Thanks for the suggestion, but it still considers an int to be a uint if the int is positive. --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> , Sherif Abdou <[EMAIL PROTECTED]> wrote: > > try using a dictionary instead of object > > > ----- Original Message ---- > From: Paul Whitelock <[EMAIL PROTECTED]> > To: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> > Sent: Thursday, May 15, 2008 4:11:19 PM > Subject: [flexcoders] Re: How to tell if variable is an int, uint, or a Number? > > > Well, it turns out that doesn't work either if the int is positive. If > an int is positive all of the follow tests return true: > > var testInt:int = 5; > var obj:Object = testInt; > > obj is int -> true > obj is uint -> true > obj is Number -> true > > Sooooo, I'm back to assuming there is no way to tell an int from a uint. > > > --- In [EMAIL PROTECTED] ups.com, "Paul Whitelock" <paul@> wrote: > > > > I found another way that seems to work (not sure why though): > > > > var testUint:uint = 1; > > var testInt:int = -1; > > var testNumber:Number = 1.1; > > > > var obj:Object = testUint; > > > > trace ("uint: " + (obj is uint && obj is int)); > > trace ("int: " + (obj is int && !(obj is uint))); > > trace ("Number: " + ((obj is Number) && !(obj is int) && !(obj is > uint))); > > > > Output: > > uint: true > > int: false > > Number: false > > > > obj = testInt; > > > > trace ("uint: " + (obj is uint && obj is int)); > > trace ("int: " + (obj is int && !(obj is uint))); > > trace ("Number: " + ((obj is Number) && !(obj is int) && !(obj is > uint))); > > > > Output: > > > > uint: false > > int: true > > Number: false > > > > obj = testNumber; > > > > trace ("uint: " + (obj is uint && obj is int)); > > trace ("int: " + (obj is int && !(obj is uint))); > > trace ("Number: " + ((obj is Number) && !(obj is int) && !(obj is > uint))); > > > > Output: > > uint: false > > int: false > > Number: true > > > > > > --- In [EMAIL PROTECTED] ups.com, "Paul Whitelock" <paul@> wrote: > > > > > > Thanks! That did help, but it doesn't seem to work for a uint. Here's > > > my test code: > > > > > > var testUint:uint = 1; > > > var testInt:int = -1; > > > var testNumber:Number = 1.1; > > > var testString:String = "test"; > > > var testDate:Date = new Date(); > > > var testArray:Array = new Array(); > > > > > > var test:Array = [testUint, testInt, testNumber, testString, testDate, > > > testArray]; > > > > > > for (var i:uint = 0; i < test.length; i++) { > > > var typeInfo:String = describeType( test[i]). @name.toString( ); > > > trace(typeInfo) ; > > > } > > > > > > And here's the output: > > > > > > int > > > int > > > Number > > > String > > > Date > > > Array > > > > > > I'm guessing there's no way to identify a uint -- is that correct? > > > > > > > > > --- In [EMAIL PROTECTED] ups.com, "Alex Harui" <aharui@> wrote: > > > > > > > > There is code that might help in > > > > DataGrid.as: itemEditorItemEd itEndHandler > > > > > > > > ____________ _________ _________ __ > > > > > > > > From: [EMAIL PROTECTED] ups.com > > [mailto:[EMAIL PROTECTED] ups.com] On > > > > Behalf Of Paul Whitelock > > > > Sent: Thursday, May 15, 2008 12:31 PM > > > > To: [EMAIL PROTECTED] ups.com > > > > Subject: [flexcoders] How to tell if variable is an int, uint, or a > > > > Number? > > > > > > > > > > > > > > > > I have a situation where an untyped variable is passed in a method > > > > call and I need to determine the data type for the variable. My > first > > > > thought was to use typeof, but typeof returns "number" for an int, > > > > uint, or a Number. The operator "is" will not work on primitives. > > > > > > > > Is there any way to determine the data type of an untyped primitive > > > > object? > > > > > > > > > >