On Wed, 21 Oct 2009, Sergei Gorelkin wrote:

Michael Van Canneyt wrote:

Hm.  I like this direction of thinking, yes...

What about

  function StepNext: Boolean; iterator 'movenext';
  property TheCurrentValue: Integer; iterator 'current';

or better yet, because it is more strict:

  function StepNext: Boolean; iterator nextvalue;
  property TheCurrentValue: Integer; iterator currentvalue;

In this way, it's more like some extra modifiers. (so like safecall, default, stored and whatnot)

It just adds some modifiers, and we're free of hard-coded names.
With one of these I could live :-)

As I tried to say earlier, having distinct StepNext() and Current() functions is somewhat redundant, except the purpose of Delphi compatibility. Rationale: the for..in loop manages the iterator object itself, and does not allow user code inside the loop to access the iterator and call its methods. Therefore, it is possible to reduce the whole thing to:

function Next(out value: SomeType): Boolean; iterator;

thus eliminating the need for additional qualifiers after 'iterator'.

If this is possible, it is even better...

The main thing is: no hardcoded names...

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to