While we're lynching features, how bout' them omittable parens?
Steven Schveighoffer
schveiguy at yahoo.com
Tue May 19 12:14:08 PDT 2009
On Tue, 19 May 2009 13:32:35 -0400, Ary Borenszweig <ary at esperanto.org.ar>
wrote:
> Steven Schveighoffer wrote:
>> On Tue, 19 May 2009 00:29:17 -0400, Ary Borenszweig
>> <ary at esperanto.org.ar> wrote:
>>
>>> Jesse Phillips escribió:
>>>> On Mon, 18 May 2009 21:53:06 -0400, Nick Sabalausky wrote:
>>>>
>>>>> "Chad J" <chadjoan at __spam.is.bad__gmail.com> wrote in message
>>>>> news:gut1od$l56$1 at digitalmars.com...
>>>>>> Lionello Lunesu wrote:
>>>>>>> "Chad J" <chadjoan at __spam.is.bad__gmail.com> wrote in message
>>>>>>> news:gut0f2$jc0$1 at digitalmars.com...
>>>>>>>> Nevermind properties. Any chance we can forbid the omittable
>>>>>>>> parentheses, at least in the lhs of an assignment expression?
>>>>>>>>
>>>>>>>>
>>>>>>> This is not because of the omittable parens. Even with added parens
>>>>>>> that code should not compile!
>>>>>>>
>>>>>>>
>>>>>> Agreed!
>>>>> I still want to get rid of omittable parens (and
>>>>> function-call-as-a-lhs)
>>>>> anyway. They're a horrible substitute for a real property syntax.
>>>> I don't like C# properties, IMO it is pointless overhead. I agree
>>>> you can misuse the omittable parentheses, but what is a "real"
>>>> property syntax? Seems to me both D and C# provide the same syntax
>>>> they are just set up differently.
>>>
>>> What I like in C# about properties is that they are like "pure"
>>> functions, so they don't have side-effects (this is just a contract on
>>> the semantic of properties). What that means is that you can invoke
>>> them while debugging code and be sure they don't alter the flow of
>>> execution. So when watching a variable you automatically can see it's
>>> properties, not just it's variables. I find that very useful, since
>>> properties basically tell you what's the representation of an object,
>>> what's it's meaning (hiding how it is implemented, ultimately).
>>>
>>> Currently you can't do that in a D debugger because a method like "int
>>> foo();" could have side effects.
>>>
>>> So for me, properties are way more than just syntax sugar.
>> AFAIK, this is not enforced by the compiler...
>> I write C# properties that have side effects.
>
> That's what I said it's a contract on the semantic of properties. :)
>
> But now I'm curious: what kind of properties do you write?
Not all the properties I write have side effects :) Most are simply
virtual data members.
One I just wrote recently is something that returns a unique ID (which
changes the next time you access it). I'm unsure what would happen if you
read the property during debugging...
I suppose I could have made this a function instead, but my point is, if
the compiler doesn't enforce it, you can't really rely on the contract.
-Steve
More information about the Digitalmars-d
mailing list