On 07/15/2012 08:56 PM, Jonathan M Davis wrote:
On Sunday, July 15, 2012 19:50:18 Timon Gehr wrote:
On 07/15/2012 05:40 AM, Jonathan M Davis wrote:
On Sunday, July 15, 2012 05:30:55 Jay Norwood wrote:
I see from this other discussions that it looks like 2.059 ( or
maybe 2.060) does support something like 3.cm().   Not sure from
the discussion if it would also accept 3.cm as in the xtext/xtend
example.

http://forum.dlang.org/thread/smoniukqfxerutqrj...@forum.dlang.org

UFCS (universal function call syntax) was added in 2.059. If cm is a
function, then 3.cm() will work. If it's a property function, then 3.cm
will work. If you don't compile with -property, then 3.cm will still work
with cm being a non-property function, but -property will become the
normal behavior eventually,  so you shouldn't expect that 3.cm will work
long term unless cm is a property function.

I expect it to stay.

Another reason why @property-'enforcement' is flawed:

@property auto cm(int arg){ .. }

cm=2;   // ok
2.cm;   // ok

The two code snippets would in fact be equivalent.

@property isn't perfect, and I admit that the fact that both cm = 2 and 2.cm
works here is undesirable, given what's trying to be done here, but it makes
sense given that it's abstracting a variable. It's just undesirable that you
can't make it so that it functions only as a getter.

cm=2 is in fact a getter call. I don't mind this, because I don't need to write that code if I don't want to. The 'puritanical' view is simply
incompatible with how the whole thing is laid out.

But the overall situation
is still a whale of a lot better than the laxity of letting just any function
be called with or without parens depending no what each particular programmer
feels like doing with it. If it's a property, it should be treated as such,
and if it isn't, it shouldn't.

What is enforced here? Why would it matter if anything is 'enforced'?

If you marked it as a property, then it's supposed to be abstracting a
variable and should be treated as one, just like if it's a normal function, it
should be invoked as a function,

This seems to be tautological. But what this statement presumably
really meant to say was 'it should be invoked as a function using the
notation present in eg. C or Java'.

just like ++ shouldn't suddenly do --, and / shouldn't *.


That depends entirely on the domain of these functions.

I don't want to get into this argument again.

Yah, we have gone through this before.

The current plan is (and has been for some time)
that -property will become the normal behavior,

It is obvious that -property is broken and will not become the normal behaviour.

Reply via email to