byKey and byValue: properties or methods?

torhu no at spam.invalid
Thu Jan 19 09:19:09 PST 2012


On 17.01.2012 07:48, Andrei Alexandrescu wrote:
> I hate I must ask this:
>
> int[string] aa;
> foreach (k; aa.byKey) { ... }
>
> or
>
> int[string] aa;
> foreach (k; aa.byKey()) { ... }
>

For it to be a property, I think you should be able to simplify this 
example:

---
auto k = aa.byKey;
writeln(k.front);
k.popFront();
writeln(k.front);
---

to this:

---
writeln(k.byKey.front);
k.byKey.popFront();
writeln(k.byKey.front);
---

and get the same result.  But my understanding is that you wouldn't, in 
which case byKey doesn't sense to me as a property.  It creates and 
returns a new range object each time you call it, right?


More information about the Digitalmars-d mailing list