Using memberspaces for a property-like syntax and more

Simen Kjaeraas simen.kjaras at gmail.com
Sat Feb 2 09:12:15 PST 2013


On 2013-14-02 10:02, TommiT <tommitissari at hotmail.com> wrote:

> I propose we just forget about the whole concept of a property, and  
> instead add to D a new construct called 'memberspace'. Memberspace  
> subdivides the 'space' in which the member functions and operators of a  
> type live into separately named 'subspaces', like namespaces do for  
> freestanding functions and classes in C++. Read more about the uses of  
> this idea over there (it's not my idea):
>
> http://accu.org/index.php/journals/1527
>
> Here's how it could look like:
>
> struct S
> {
>      int _value;
>
>      memberspace space1
>      {
>          int opCall() const
>          {
>              return _value;
>          }
>
>          void opAssign(int v)
>          {
>              _value = v;
>          }
>
>          void method() const { }
>      }
>
>      memberspace space2
>      {
>          static int opCall()
>          {
>              return 123;
>          }
>      }
> }
>
> void main()
> {
>      S var;
>      var.space1 = 42;
>      assert(var.space1() == 42);
>      assert(S.space2() == 123);
>      var.space1.method();
>
>      int n1 = var.space1; // error
>      int n2 = S.space2;   // error
> }
>
> Now, imagine replacing the name of your memberspace with the name of the  
> thing you used to call a 'property'.

This seems to be basically what I outlined in issue 5158[1].


[1] http://d.puremagic.com/issues/show_bug.cgi?id=5158

-- 
Simen


More information about the Digitalmars-d mailing list