Exactly. Same applies to UDFs as well. Simply declare your variables.
Example:

        <cffunction name="test" access="public" returnType="numeric"
output="false">
                <cfset var x = 1>
                <cfreturn x * 2>
        </cffunction>

=======================================================================
Raymond Camden, ColdFusion Jedi Master for Mindseye, Inc

Email    : [EMAIL PROTECTED]
WWW      : www.camdenfamily.com/morpheus
Yahoo IM : morpheus

"My ally is the Force, and a powerful ally it is." - Yoda 

> -----Original Message-----
> From: Willy Ray [mailto:[EMAIL PROTECTED]] 
> Sent: Wednesday, February 12, 2003 3:26 PM
> To: CF-Talk
> Subject: RE: CFC vs. Customtag Surprise: Recursion
> 
> 
> Oh really?  So any variables that I set within the function 
> were being overwritten at every iteration by the next 
> instance of the function?
> 
> >>> [EMAIL PROTECTED] 02/12/03 10:15AM >>>
> I bet you forgot to var scope your variables in the CFC. 
> Custom tags variables are protected by default - values in a 
> CFC method must be protected explicitely(sp) using the var 
> scope declaration.
> 
> ==============================================================
> =========
> Raymond Camden, ColdFusion Jedi Master for Mindseye, Inc
> 
> Email    : [EMAIL PROTECTED] 
> WWW      : www.camdenfamily.com/morpheus 
> Yahoo IM : morpheus
> 
> "My ally is the Force, and a powerful ally it is." - Yoda 
> 
> > -----Original Message-----
> > From: Willy Ray [mailto:[EMAIL PROTECTED]]
> > Sent: Wednesday, February 12, 2003 11:03 AM
> > To: CF-Talk
> > Subject: CFC vs. Customtag Surprise: Recursion
> > 
> > 
> > Ok,
> > 
> > my database table for storing my content is a big tree, set
> > up like this id ----- label ----- parentid 1  ---- 'myweb' 
> > ---- 0 2 ------ 'links' -------1 3 ----- 'portfolio' ---1 4 
> > ----- 'firstlink' ---- 2
> > 
> > Make sense?  Every row has it's own Id, and the ID of its
> > parent, and from this I get a big branching tree structure to 
> > hold the data.  I'm presented with this problem where I have 
> > to take a branch of the tree and make an exact copy of it 
> > within the database.  The relationships have to be all the 
> > same, but all new ids. A copy of the 'myweb' node from the 
> > example above looks like this:
> > 
> > id ----- label ----- parentid
> > 1  ---- 'myweb' ---- 0
> > 2 ------ 'links' -------1
> > 3 ----- 'portfolio' ---1
> > 4 ----- 'firstlink' ---- 2
> > 5  ---- 'myweb' ---- 0
> > 6 ------ 'links' -------5
> > 7 ----- 'portfolio' ---5
> > 8 ----- 'firstlink' ---- 6
> > 
> >  I'm thinking, excellent opportunity to go nuts with CFCs,
> > and write some recursion, right?  Wrong.  Here's what 
> > happened (pseudo-code):
> > 
> > 1.Create a function named replicate:
> > 
> > 2.Takes two arguments:  NodeToDuplicate, and ParentOfNewNode.
> > 
> > 3.Selects everything from the table where id = nodeToDuplicate
> > 
> > 4.Inserts the data from previous query with parentid =
> > arguments.ParentOfNewNode (this re-creates the node, with a 
> > parent that
> > *I've* specified when I invoke the function)
> > 
> > 5.Selects the MAX(id) from the table WHERE label =
> > 'thelabelIGotFromTheFirstQuery', sets that to NewNodeId
> > 
> > 6.Selects all the ids WHERE parentid = NodeToDuplicate (this
> > gets all children of the current node) call it qGetChildren
> > 
> > 7.Loop over qGetChildren
> >      Re-invoke the replicate function from within itself for
> > every child of the current node.
> >      NodeToDuplicate = qGetChildren.id
> >      ParentOfNewNode = NewNodeId (the id of the newly 
> > replicated node in step 4)
> >      /loop
> > 
> > Ok.  let that soak in.  Should work, right?  Right.  I
> > thought so too. 
> > It fails hard.  Gets off-track fast.  I go through the logs 
> > of what it did (after I reboot the web AND database server) 
> > and it's getting down to the first node that has no 
> > children... Then looping back to the top of the whole 
> > structure, and looping trying to duplicate nodes that have no 
> > relationship to the node I'm trying to duplicate, then it 
> > gets into a loop where it's running down the left-hand side 
> > of the tree from top to bottom over and over until the 
> > house-of-cards comes crashing down, and I've killed the server.  
> > 
> > I'm thinking, 'It's in the logic.  My recursion is bad'.
> > Spend about a week on the above 7 points.  On a whim, 
> > re-encapsulate THE EXACT SAME LOGIC as above into a Custom 
> > Tag.  Works like a freakin' charm.  
> > 
> > So, what's the difference?  The CFCs are creating multiple
> > threads, and getting out of sync with the database returns?  
> > Trying to process the next iteration before it's gotten the 
> > return from the database, whereas the custom tag is running 
> > more procedurally?  Or what? 
> > 
> > Any thoughts?  I'm happy to supply the actual code to anybody
> > who's interested.
> > 
> > Willy
> > 
> > 
> > 
> > 
> > 
> > -----
> > Willy Ray
> > Web Applications Developer
> > Certified Advanced ColdFusion Developer
> > Westminster College
> > 
> 
> 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription: 
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

                                Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4
                                

Reply via email to