On Saturday, August 13, 2011 02:10:35 Andrej Mitrovic wrote:
> On 8/13/11, bearophile <bearophileh...@lycos.com> wrote:
> > Andrej Mitrovic:
> >> void main(string[] args)
> >> {
> >> 
> >>     args.popFront;  // get rid of name
> >>     
> >>     foreach (arg; args)
> >>     {
> >>     }
> >> 
> >> }
> > 
> > If I see code like that I probably rewrite it like this:
> > 
> > void main(in string[] args) {
> > 
> >     foreach (arg; args[1..$]) {
> >     }
> > 
> > }
> 
> And what benefit is there to that? I pop the argument and then don't
> have to worry about it ever again. Whereas you're using [1..$], and
> later on in your argument parsing code you might introduce a bug like:
> 
> auto userArgumentCount = args.length; // woops, you'll get 1 extra
> here due to app name.

It depends on what you're doing. If all you're doing is iterating over the 
arguments once, then there's no reason to pop an element off. It's more code 
and is slightly less efficient. However, if you're going to do more than that 
with the arguments, then it may very well just be better to pop off the front 
before doing anything else with them. Either approach could be better 
depending on what else you're doing in your code.

- Jonathan M Davis

Reply via email to