Where does Return return to?
- To: mathgroup at smc.vnet.net
- Subject: [mg48601] Where does Return return to?
- From: koopman at sfu.ca (Ray Koopman)
- Date: Mon, 7 Jun 2004 05:33:29 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Consider the following three functions,
which I thought would be equivalent.
func1[n_] := Block[{L = n, otherstuff},
While[L > 1,
Which[cond1, expr1,
cond2, Return[expr2],
True, expr3];
L--];
expr4]
func2[n_] := Block[{L = n, otherstuff},
While[Which[cond1, expr1,
cond2, Return[expr2],
True, expr3];
--L > 1];
expr4]
func3[n_] := Block[{otherstuff},
Do[Which[cond1, expr1,
cond2, Return[expr2],
True, expr3],
{L,n,2,-1}];
expr4]
func1 returns expr2 or expr4, as desired,
but both func2 and func3 always return expr4.
In each function, nothing changes if I replace the Which by
If[cond1, expr1, If[cond2, Return[expr2], expr3]].
Yes, I know I could use Throw/Catch here, but on my system that's
slower, and it would still leave me wondering what the rule is for
where Return returns to.
- Follow-Ups:
- Re: Where does Return return to?
- From: DrBob <drbob@bigfoot.com>
- Re: Where does Return return to?