byKey and byValue: properties or methods?

Steven Schveighoffer schveiguy at yahoo.com
Thu Jan 19 16:57:51 PST 2012


On Thu, 19 Jan 2012 18:41:44 -0500, Andrei Alexandrescu  
<SeeWebsiteForEmail at erdani.org> wrote:

> On 1/19/12 4:43 PM, Steven Schveighoffer wrote:
>> On Thu, 19 Jan 2012 14:06:00 -0500, torhu <no at spam.invalid> wrote:
>>> If the type of byKeys is Range, I would expect to be able to treat it
>>> like one. Not like one, then another, then another, then another... ad
>>> infinitum.
>>
>> I don't know what you mean. You can treat it like one.
>>
>> -Steve
>
> It's the rvalue aspect. byKey does not hold a range inside the hashtable  
> (as a member variable would do). Each use of byKey gives you a range  
> that you get to iterate from the beginning.

The point of a property is to allow for read-only access on something that  
is logically a property but can only be implemented via a function.   
byKeys is such a property.  There is no way to specify a field that  
behaves the same.  This doesn't make properties invalid or useless.

But Torhu, your use of terminology doesn't make sense.  The type of byKeys  
is a Range, and you can use it as a Range.  A range on a container is a  
shallow view, it fundamentally does not affect the container topology.

-Steve


More information about the Digitalmars-d mailing list