[Tutor] Paper Rock Scissors game - User's choice not returned properly

Steven D'Aprano steve at pearwood.info
Tue Nov 1 00:30:40 CET 2011


Joel Montes de Oca wrote:

> When the user enters an invalid letter, FUNCTION B calls FUNCTION A. 
> FUNCTION A returns choice to FUNCTION B. FUNCTION B does nothing with 
> the return, FUNCTION MAIN gets nothing to returned to it, thus choice is 
> NONE.
> 
> FUN MAIN
>   |
>   |
>   |__ FUN A
>           |
>           |
>           |_ FUN B
> 
> This is how I understand it. So if I want this to work, I need FUN B to 
> give something back to FUN A so that FUN A will have something to give 
> back to FUN MAIN but that doesn't feel right.

But that's exactly right.

Think of people at a dinner table. Fred turns to Barney and says "Pass 
me the salt please." Barney can't reach the salt, so he turns to Wilma 
and asks the same thing. Wilma hands Barney the salt. Now Barney has to 
actually hand the salt to Fred or else Fred doesn't get anything.

So if you care about getting a value back from something, and passing it 
on elsewhere, you MUST use return.

> Is there a way to say GO TO FUN A instead of calling the function?

No. That's what a function call is: it's a safe goto. (Technically, it's 
more like GOSUB if you remember your BASIC.)



-- 
Steven



More information about the Tutor mailing list