Revised RFC on range design for D2
Simen Kjaeraas
simen.kjaras at gmail.com
Wed Oct 1 00:52:09 PDT 2008
On Wed, 01 Oct 2008 07:58:20 +0200, Benji Smith <dlanguage at benjismith.net>
wrote:
> Bill Baxter wrote:
>> On Tue, Sep 30, 2008 at 3:36 AM, Steven Schveighoffer
>> <schveiguy at yahoo.com> wrote:
>>>> There is no ambiguity either case. You evaluate Stdout.newline. The
>>>> evaluation yields a value of some type. Then you evaluate formatln
>>>> against
>>>> that value.
>>> OK, then tell me what this does:
>>>
>>> x.y.z();
>>>
>>> Is y a property/field of x or a function call with no args? I see a
>>> benefit
>>> to being able to understand a line of code without requiring lots of
>>> extra
>>> context. I have to do less lookups of the source of a function or
>>> property.
>> The problem with this argument is that unless you disallow properties
>> altogether, you still won't know whether y is actually a field or a
>> call to a property method without looking it up.
>> --bb
>
> One thing that I've found especially annoying about the current
> implementation is this:
>
> x.y = 3; // Working code
> x.y += 3; // Broken, if x.y is actually a function
> x.y = x.y + 3; // Ugly work-around
>
> I've been bitten by this at least a dozen different times. Having a real
> property syntax would eliminate cases like that.
>
> --benji
It seems we will soon get reference return values, in which case this would
no longer be a problem. I have also written a property template that
enables
things such as that, but it would also benefit immensely from reference
return values.
--
Simen
More information about the Digitalmars-d-announce
mailing list