Because you where using the default scope that can be seen by default all
functions can see.  The Var keyword declares the scope private to the
function alone.  

--------------
Ian Skinner
Web Programmer
BloodSource
www.BloodSource.org
Sacramento, CA


-----Original Message-----
From: Cedric Villat [mailto:[EMAIL PROTECTED]
Sent: Thursday, September 18, 2003 10:13 AM
To: CF-Talk
Subject: Re:Recursion and Scope problem?


Bingo, worked like a champ. But I'm still wondering WHY the scopes be
overwritten? I just don't get it....

Cedric

>Try using the "var" keyword in your first four <cfset> statements.
>
><cfset var root_node = Arguments.node>
><cfset var levels = ...
>
>
>-----Original Message-----
>From: Cedric Villat [mailto:[EMAIL PROTECTED]
>Sent: Thursday, September 18, 2003 12:59 PM
>To: CF-Talk
>Subject: Recursion and Scope problem?
>
>
>Ok, I'm doing a bit of recursion, and my variables seem to be overwriting
>themselves, which makes no sense to me. Here is my code:
>
><cffunction name="getDTreeWidth" returntype="numeric">
> <cfargument name="node" type="string" required="yes">
> <cfargument name="level" type="numeric" required="yes">
>
> <cfset root_node = Arguments.node>
> <cfset levels = Arguments.level>
> <cfset children = Request.children>
> <cfset width = 0>
>
> <cfif levels EQ 0>
>  <!--- No more levels to show --->
>  <cfset width = 1>
> <cfelseif NOT StructKeyExists(children, root_node) OR
>ArrayLen(children[root_node]) LTE 0>
>  <!--- No Children --->
>  <cfset width = 1>
> <cfelse>
>  <cfloop from="1" to="#numChildren(root_node)#" index="a">
>   <cfset width = width + getDTreeWidth(children[root_node][a], levels -
1)>
>  </cfloop>
> </cfif>
>
> <cfreturn width>
></cffunction>
>
>
>In this example, the root_node is "Homer Simpson". He has 3 children Bart,
>Lisa, and Maggie. When the function is first run, Arguments.node is "Homer
>Simpson". It goes through the code until it gets to the recursive call
>getDTreeWidth() which then calls itself for each child. After calling
>getDTreeWidth() for Bart, it seems to work. When the function returns a
>number and is added to the width, the next time through Homer Simpson's
>loop, the root_node is now "Bart Simpson"! How could the recursive call to
>Bart Simpson overwrite Homer Simpson's original arguments? Is this a bug or
>am I missing something here?
>
>Any help would be appreciated. It may not make sense, so let me know if you
>need some more clarification.
>
>Cedric
>
>
>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Message: http://www.houseoffusion.com/lists.cfm?link=i:4:137535
Archives: http://www.houseoffusion.com/lists.cfm?link=t:4
Subscription: http://www.houseoffusion.com/lists.cfm?link=s:4
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Your ad could be here. Monies from ads go to support these lists and provide more 
resources for the community. 
http://www.fusionauthority.com/ads.cfm

Reply via email to