On Saturday, November 1, 2014 9:15:43 AM UTC-7, Kapil Agarwal wrote: > > I need those variables as globals as otherwise I will have to pass them > from one function to another all the time. >
It's generally better long-term design to pass the relevant state around than to have it be global. One thing that helps is to define a type that encapsulates the relevant state, so that you only have to pass one thing around between functions instead of many. E.g. if I have f(a, b, c, d) mutatea!(a) mutateb!(b) mutatec!(c) mutated!(d) return g(a,b,c,d) end and suppose that g calls another function that also depends on a, b, c, and d, and so on, it can get kind of tedious to pass all the arguments separately. But you can do type algorithmState a::Ta b::Tb c::Tc d::Td end (where the Ta, Tb, Tc, and Td should be replaced by appropriate concrete types). Then you can do f(x::algorithmState) mutateState!(x) g(x) end