Thread overview
Properties
Feb 13, 2004
Vathix
Feb 13, 2004
Matthew
Feb 13, 2004
Manfred Nowak
February 13, 2004
I don't think allowing properties to be used like a function and a variable interchangably is a good idea.

class Foo
{
  int bar  = 3;
  int baz() { return 3; }
}
Foo foo = new Foo;
int bat = foo.bar(); //not possible
int bam = foo.baz; //possible

I understand the reasoning but doesn't it seem inconsistent? Isn't one of the reasons for having properties to be able to change a variable into a property, and vice versa, without code breaking? One day I might want baz to be a variable, but someone else already looked at my code and saw it was a function so they added () to access it. Well, even if that wasn't one of the reasons for properties, it would still be nice to designate which functions are properties and not allow them to be accessed like a function:

class Foo
{
  int bar = 3;
  property int baz() { return 3; }
}
Foo foo = new Foo;
int bam = foo.baz(); //not possible! it's a property
int bay = foo.baz; //good

This also solves problems with the compiler, because at no time will it need to treat it like a delegate.


-- 
Christopher E. Miller
www.dprogramming.com
irc.dprogramming.com #D
February 13, 2004
Agreed. I'm also concerned about the foo-free approach to properties. I also agree that a property should not be callable as a normal function.

"Vathix" <vathix@dprogramming.com> wrote in message news:c0havo$2s9f$1@digitaldaemon.com...
> I don't think allowing properties to be used like a function and a variable interchangably is a good idea.
>
> class Foo
> {
>    int bar  = 3;
>    int baz() { return 3; }
> }
> Foo foo = new Foo;
> int bat = foo.bar(); //not possible
> int bam = foo.baz; //possible
>
> I understand the reasoning but doesn't it seem inconsistent? Isn't one of the reasons for having properties to be able to change a variable into a property, and vice versa, without code breaking? One day I might want baz to be a variable, but someone else already looked at my code and saw it was a function so they added () to access it. Well, even if that wasn't one of the reasons for properties, it would still be nice to designate which functions are properties and not allow them to be accessed like a function:
>
> class Foo
> {
>    int bar = 3;
>    property int baz() { return 3; }
> }
> Foo foo = new Foo;
> int bam = foo.baz(); //not possible! it's a property
> int bay = foo.baz; //good
>
> This also solves problems with the compiler, because at no time will it need to treat it like a delegate.
>
>
> -- 
> Christopher E. Miller
> www.dprogramming.com
> irc.dprogramming.com #D


February 13, 2004
Vathix wrote:

[...]
> Isn't one of the reasons for having properties to be able to change a variable into a property, and vice versa, without code breaking?
[...]

Currently no. Otherwise you should consider this as a bug:

void p(real p){ printf("real\n");};
void p(int p){ printf("int\n"); }
void main(){
  p=1;
  p=1.0l;
}

So long.