On Wednesday, March 4, 2015 at 6:38:28 PM UTC-5, Pooya wrote:
>
> Thanks for your response. I am not sure what you mean by a lower-level 
> subroutine. Is that a function inside another one? If yes, How does the 
> scope of variables work for that? 
>

>From your description, right now you have:

function compute_two_outputs(...)
       ...do some stuff, get x, y, and z....
       ....use x, y, and z to compute output1....
       ....use output1, x, y, and z to compute output2....
      return output1, output2
end

Instead, if you don't always want to compute both outputs, but still want 
to write the shared computations only once, you can refactor the code to 
pull out the shared computations into another function (that is "lower 
level" in the sense that users won't normally call it directly):

function some_stuff(...)
       ...do some stuff, get x, y, and z....
       ....use x, y, and z to compute output1....
       return output1,x,y,z
end

function compute_output1(...)
      return some_stuff(...)[1]
end

function compute_two_outputs(...)
       output1,x,y,z = some_stuff(...)
       ....use output1, x, y, and z to compute output2....
      return output1, output2
end


Reply via email to