byKey and byValue: properties or methods?

Steven Schveighoffer schveiguy at yahoo.com
Tue Jan 24 14:45:38 PST 2012


On Tue, 24 Jan 2012 16:43:33 -0500, Era Scarecrow <rtcvb32 at yahoo.com>  
wrote:

>> >> byKey is what, an adverb phrase, an adjective
>> phrase? It can't name a
>> >> range which is a thing.
>> >
>> > It has the implied verb "enumerate", "span". "Span
>> hashtable by key".
>>
>> Actually, it's for each (x) in (y) by key:
>>
>> foreach(i; aa.byKey);
>>
>> The verb is not implied, nor should it be:
>
>  Perhaps I'm out of line, and I haven't looked much at the class/struct  
> specifically in question (Actually I have no clue which one your talking  
> about),

The builtin associative arrays of D.  i.e.:

int[string] aa;

> but I would wonder one thing. Would it be read/write or just read-only?  
> If it's read-only, I would think there would be no harm in having it as  
> a property.

If key, it must be read only, since keys must be immutable.

If value, it could potentially be read/write.

>  A second thought, is would there be any benefit having it as a method,  
> specifically passing the address as a function rather than just getting  
> the return value (From what I can tell that's unlikely).

properties are methods.  There should be a way to pass a delegate to a  
property function, not allowing this would be unnecessarily limiting.   
Some sort of __traits directive comes to mind...

-Steve


More information about the Digitalmars-d mailing list