On Wednesday, 11 December 2013 at 08:21:33 UTC, luka8088 wrote:
Hi everyone!

I would like to address the issue of global variables (or states). In general my opinion is that they are bad solely because they (in most cases) lack the ability of alternative values (or states) or ability to
alter them in user friendly way.

For example, take write function from std.stdio. For a third party function that uses write to output to screen user is unable to redirect
that output to, for example, file without altering third party
function's body.

"write" is really just a global helper/shortcut function that calls "stdout.write". If the user wants to customize this, then it's really no more complicated than doing a write to a named stream, which represents the global out, which may or may not be stdout:

auto myGlobalOut = stdout;
myGlobalOut.write(); //Writes to console (technically, "standard output")

//Change the global output context
myGlobalOut = File("out.txt", "w");
myGlobalOut.write(); //Writes to file

--------

I'm not really sure I understood the rest of what you posted though, so I can't make any comments on that.

Reply via email to