new DIP5: Properties 2

Michel Fortin michel.fortin at michelf.com
Mon Jul 27 07:29:56 PDT 2009


On 2009-07-27 09:40:04 -0400, Kagamin <spam at here.lot> said:

> Michel Fortin Wrote:
> 
>> I mean, what's the purpose of giving a type to the namespace when you
>> already have a type for the opGet return value?
> 
> It's more of property than namespace, so opGet return type can be 
> inferred from the property type. See the paragraph about type inference 
> for getter and setter.

Ah, I see. Makes sense.

But personally I think I prefer the basic namespace approach. I just 
don't like functions with some magic names that have a special syntax 
in some special context, even if that syntax optional. Especially since 
there is some risk of incoherency; for instance should this be illegal?

	int width
	{
		float opGet();
	}

or even this?

	float width
	{
		void opSet(int);
	}

And if so, what about this:

	float width
	{
		void opSet(int); // version with int-optimized calculations
		void opSet(float);
	}

With the namespace approach (renamed the keyword to "property" here) 
there is no such ambiguity possible:

	property width
	{
		float opGet();
		void opSet(int); // version with int-optimized calculations
		void opSet(float);
	}


-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/




More information about the Digitalmars-d mailing list