huh, thanks again Pete, I am obviously have my Java roots showing. 
This is the sort of thing that it is hard to get to know about AS3
without coding for some time, and I am relatively new to it.

How do I distinguish between types that need initialisation through
new and those that don't?  For instance an ArrayCollection needs a new
whereas a Number (and apparently a String) does not.  I naively
considered them all to be objects and as such need initialising,
although I am clearly not religious about it in my code.

I have also long wondered about primitives in AS3.  What is an int? 
What primitives are there?  What is a Boolean?

Is there a good reference source for this sort of AS3 information?  I
think I have travelled far enough that it is about time I went back to
the beginning.

--- In [email protected], "Peter Farland" <[EMAIL PROTECTED]> wrote:
>
> I would guess that === is actually faster than == as the latter has to
> check whether it needs to perform any casting before checking equality. 
>  
> Out of curiousity, have you tried to use "" instead of new String() to
> initialize category (it's unconventional to use new String() in AS3)?
>  
> Otherwise, you could send the complete source in a bug for the team to
> take a look.
>  
> Pete
> 
> ________________________________
> 
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of simonjpalmer
> Sent: Wednesday, April 04, 2007 12:42 PM
> To: [email protected]
> Subject: [flexcoders] Re: question about string equality
> 
> 
> 
> Good point, I didn't include the declarations. 
> 
> They are both strongly typed Strings, I don't use objects anywhere in
> my code.
> 
> co is a custom AS object of type "Competitor", here's the declaration
> of the name member:
> 
> public var name:String;
> 
> oc is a custom AS object of type "ObjectCategory" and here is the
> declaration of the category member:
> 
> public var category:String = new String();
> 
> The strong typing answers the question about whether they just happen
> to contain strings.
> 
> Other than the fact that they belong to custom objects I have written,
> there is nothing peculiar about either the string variables or their
> contents.
> 
> I don't think they are in a custom namespace, but to be honest I'm not
> exactly sure what that means, so I can't say with certainty that they
> aren't. I think the answer is no.
> 
> co.name gets populated by various means, either though a user gesture
> in a custom page or by retrieval from a java data adaptor to my
> server. oc.category is populated programmatically during execution of
> the code in question.
> 
> I appreciate you guys looking at this. Right now I have it working as
> I expect but it is a bit worrying that I need to do the comparison in
> this way only in this instance. That says to me that I don't properly
> understand something.
> 
> If I want to check equality of the content of two strings should I
> always be testing valueOf()? 
> 
> What is the overhead of using ===?
> 
> --- In [email protected] <mailto:flexcoders%40yahoogroups.com>
> , "Peter Farland" <pfarland@> wrote:
> >
> > What are the type declarations of the properties sc.name and
> > sc.category? Do they just happen to hold String values or are they
> typed
> > to enforce that they hold String values? Is there anything else unique
> > about these properties? Are they in a custom namespace? Are they
> > read-only? How were they populated in the first place?
> > 
> > ________________________________
> > 
> > From: [email protected] <mailto:flexcoders%40yahoogroups.com>
> [mailto:[email protected] <mailto:flexcoders%40yahoogroups.com>
> ] On
> > Behalf Of simonjpalmer
> > Sent: Monday, April 02, 2007 6:14 PM
> > To: [email protected] <mailto:flexcoders%40yahoogroups.com> 
> > Subject: [flexcoders] question about string equality
> > 
> > 
> > 
> > take a look at this code snippet...
> > 
> > 01 // check one doesn't already exist with this name
> > 02 bFound = false;
> > 03 for (isc = 0; isc < ss.scenarios.length && !bFound; isc++)
> > 04 {
> > 05 sc = Scenario(ss.scenarios.getItemAt(isc));
> > 06 if (sc.name.valueOf() == oc.category.valueOf()) bFound = true;
> > 07 }
> > 08 if (!bFound)
> > 09 {
> > 10 // Make a new scenario
> > 11 sc = PlanPointFactory.makeScenario(uli, null, true, false);
> > 12
> > 13 // add it to the snapshot
> > 14 ss.addScenario(sc);
> > 15
> > 16 // add it to the local array of categories
> > 17 oc.objects.push(sc);
> > 18 }
> > 
> > line 06 is the offending line.
> > 
> > if I have:
> > 
> > 06 if (sc.name == oc.category) bFound = true;
> > 
> > the bFound flag never gets set true. I have to have the valueOf()
> > function in order for the equality to fire correctly.
> > 
> > This is not what I expected. I thought that regular equality would
> > have sufficed here since sc.name and oc.category are both Strings.
> > 
> > Why am I wrong and why do I need valueOf()?
> >
>


Reply via email to