byKey and byValue: properties or methods?

Alvaro alvaroDotSegura at gmail.com
Tue Jan 17 14:19:06 PST 2012


El 17/01/2012 18:24, Andrei Alexandrescu escribió:
>> On 2012-01-17 06:48:26 +0000, Andrei Alexandrescu
...
>
> aa.keys is taken btw.
>


OK, I see, .keys and .values currently return dynamic arrays.

But the most appropriate property name for the above range should indeed 
be .keys !

Now, wouldn't it be be better to turn .keys into the proposed range?

Let's see. What is the use of .keys?

I searched phobos and found that .keys is mostly used to itarate over 
the keys in a foreach loop. With the problem that is needs to allocate a 
dynamic array. If silently changed to the proposed range, the foreach 
loop would do the same and without an allocation.

In a few unittests, .keys is followed by .sort, usually to print the 
keys in order. That would not work... unless the produced range includes 
a .sort method. Alternatively a .sortedKeys property can be added.

The other use I see in phobos is just a typeof(a.keys[0]), which could 
be replaced by typeof(a.keys.front)


What is the benefit of .keys as a range? it does not allocate an array, 
just gives the keys.

And if an array is needed, it is easy to turn a range into an array. 
[Well, I'm missing a more direct way of doing that than using foreach 
and appending]



More information about the Digitalmars-d mailing list