opDollar
Steven Schveighoffer
schveiguy at yahoo.com
Thu Sep 11 19:10:42 PDT 2008
"Bill Baxter" wrote
> On Fri, Sep 12, 2008 at 2:28 AM, Steven Schveighoffer
> <schveiguy at yahoo.com> wrote:
>> "Tomas Lindquist Olsen" wrote
>>> Stewart Gordon wrote:
>>>> "Bill Baxter" <wbaxter at gmail.com> wrote in message
>>>> news:mailman.89.1220922329.19733.digitalmars-d-announce at puremagic.com...
>>>>> On Tue, Sep 9, 2008 at 9:37 AM, Andrei Alexandrescu
>>>>> <SeeWebsiteForEmail at erdani.org> wrote:
>>>>>> Denis Koroskin wrote:
>>>>>>> 4) We need some way of supporting dollar notation in user
>>>>>>> containers.
>>>>>>> The
>>>>>>> hack of using __dollar is bad (although it works).
>>>>
>>>> Agreed.
>>>>
>>>>>> It doesn't work for multiple dimensions. There should be an
>>>>>> opDollar(uint
>>>>>> dim) that gives the library information on which argument count it
>>>>>> occured
>>>>>> in. Consider:
>>>> <snip>
>>>>
>>>> opDollar is the wrong choice of name. The op* methods are - as a
>>>> rule -
>>>> named after the semantic function of the operator, rather than what the
>>>> operator looks like. For example, opMul not opAsterisk, opIndex not
>>>> opSquareBrackets. Consequently, opStar is already inconsistently
>>>> named;
>>>> I think one such is enough. As for what the function to overload $
>>>> should be called ... how about opEnd?
>>>>
>>>> Where did this conversation begin? I can't seem to find any messages
>>>> up
>>>> the thread from the one I'm replying to now.
>>>>
>>>> Stewart.
>>>>
>>>
>>> Since $ is used as a shortcut for for array.length, I'd say opLength is
>>> a
>>> better choice. Maybe I missed some of the discussion ...
>>
>> I'd agree with opEnd. opLength is only a valid construct for arrays,
>> where
>> the slice indexes are based on how far into the container the element is.
>>
>> For example, if you wanted to 'slice' an AA, you would use 2 keys for the
>> slice 'indexes', what if the keys are strings?
>
> I'd say opSize, ala STL. They got it right. Should .size for arrays
> too, not .length. "Size" is a word that generalizes pretty well,
> "length" is not.
size doesn't work for slices that don't use sequential integers as index.
i.e. imagine a sorted map (such as tree map) slice:
TreeMap!(char[], char[]) tm;
// create a slice of the treemap
auto slice = tm["one".."two"];
Replace the second with 'length' or 'size', and it looks weird:
auto slice = tm["one"..length]
auto slice = tm["one"..size]
I much prefer 'end' or 'last'. It reads natural. From the "one" element to
the end.
>
> Also don't forget about opStar! It shoudn't be called that either.
> opDeref is what it really wants to be. :-)
>
> [/dream mode off]
I agree with you there.
-Steve
More information about the Digitalmars-d-announce
mailing list