Proposal request: explicit propreties
Lionello Lunesu
lio at lunesu.remove.com
Tue Apr 1 07:23:24 PDT 2008
Ary Borenszweig wrote:
> The problem is, the user can use them as functions or as properties.
> This is ok from the compiler point of view, but the code looks ugly if
> it doesn't make sense, like:
>
> writefln = 5;
Code that doesn't make sense is always ugly.
Furthermore, I think that particular case can be fixed without removing
the current syntax by limiting it's scope to functions with a single
argument.
> Further, if you want a function to be only used with property syntax,
> you can't. Why would you wan't that? Because if you have
>
> class Foo {
>
> int property() {
> //
> }
>
> }
>
> and then you decide to change it to
>
> class Foo {
>
> int property;
>
> }
>
> for some reason, code that used Foo.property() won't compile anymore.
The whole point of property is that you can simply leave it as a
function and the compiler will inline it if it turns out to be a trivial
get/set. You're reasoning here is the wrong way around.
> Finally, there is another reason for wanting to mark functions as
> properties: when you do autocompletion in an IDE, and it suggests you a
> function, it can't know whether to autocomplete it as a function or as a
> property. A solution could be writing something in the ddoc of that
> function, but since there's no standard for this, each IDE will invent
> it's own.
This I don't get. Whether you want dummy "()" or not sounds like a
style, much like space vs. tab, or tab size. IDE's can make it a user
setting.
> Of course, this is not backwards compatible, so it should be a D2 feature.
>
> What do you think?
I like the current "implicit getter/setter" very much and think it's one
of the nicest features of D!
L.
More information about the Digitalmars-d
mailing list