digitalmars.D - Proposal: Reference Variables
- S. Chancellor <dnewsgr mephit.kicks-ass.org> Apr 06 2006
- Hasan Aljudy <hasan.aljudy gmail.com> Apr 07 2006
- Bruno Medeiros <brunodomedeirosATgmail SPAM.com> Apr 09 2006
- Hasan Aljudy <hasan.aljudy gmail.com> Apr 10 2006
- Bruno Medeiros <brunodomedeirosATgmail SPAM.com> Apr 09 2006
- Hong <Hong_member pathlink.com> Apr 10 2006
I would like to suggest the following variable type added to D as a supplement to pointers. Please review the following code and suggest modifications and additions as you see. Thanks! -S. Oh yes, and please assume all the following asserts PASS. long x = 2; long& y = &x; assert(y == 2); y = 4; assert(x == 4); assert(&y == &x); //Notice the change in the operation of &. Not a handle to x! long z = 5; &y = &z; //& Allows l-value assignment, assert( y == 5 ); assert( &y == &z ); assert(y.sizeof == z.sizeof); //Sizeof gives information on referenced type, not reference. Ditto for other properties
Apr 06 2006
S. Chancellor wrote:I would like to suggest the following variable type added to D as a supplement to pointers. Please review the following code and suggest modifications and additions as you see. Thanks! -S. Oh yes, and please assume all the following asserts PASS. long x = 2; long& y = &x; assert(y == 2); y = 4; assert(x == 4); assert(&y == &x); //Notice the change in the operation of &. Not a handle to x! long z = 5; &y = &z; //& Allows l-value assignment, assert( y == 5 ); assert( &y == &z ); assert(y.sizeof == z.sizeof); //Sizeof gives information on referenced type, not reference. Ditto for other properties
While I like the idea of references and refernce semantics for things like structs and whatnot, I think the C++ & operator is the *wrong* way to do it.
Apr 07 2006
Hasan Aljudy wrote:S. Chancellor wrote:I would like to suggest the following variable type added to D as a supplement to pointers. Please review the following code and suggest modifications and additions as you see. Thanks! -S. Oh yes, and please assume all the following asserts PASS. long x = 2; long& y = &x; assert(y == 2); y = 4; assert(x == 4); assert(&y == &x); //Notice the change in the operation of &. Not a handle to x! long z = 5; &y = &z; //& Allows l-value assignment, assert( y == 5 ); assert( &y == &z ); assert(y.sizeof == z.sizeof); //Sizeof gives information on referenced type, not reference. Ditto for other properties
While I like the idea of references and refernce semantics for things like structs and whatnot, I think the C++ & operator is the *wrong* way to do it.
What do you mean "reference semantics"? "References" (as in "reference variables, "alias references", or "c++ references") do not give "reference semantics", (as in "reference types"). -- Bruno Medeiros - CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
Apr 09 2006
Bruno Medeiros wrote:Hasan Aljudy wrote:S. Chancellor wrote:I would like to suggest the following variable type added to D as a supplement to pointers. Please review the following code and suggest modifications and additions as you see. Thanks! -S. Oh yes, and please assume all the following asserts PASS. long x = 2; long& y = &x; assert(y == 2); y = 4; assert(x == 4); assert(&y == &x); //Notice the change in the operation of &. Not a handle to x! long z = 5; &y = &z; //& Allows l-value assignment, assert( y == 5 ); assert( &y == &z ); assert(y.sizeof == z.sizeof); //Sizeof gives information on referenced type, not reference. Ditto for other properties
While I like the idea of references and refernce semantics for things like structs and whatnot, I think the C++ & operator is the *wrong* way to do it.
What do you mean "reference semantics"? "References" (as in "reference variables, "alias references", or "c++ references") do not give "reference semantics", (as in "reference types").
Maybe I don't understand the meaning of "semantics"! What I mean by "Reference semantics" is reference behavior applied to pointers. (if that makes it any clearer ..)
Apr 10 2006
S. Chancellor wrote:I would like to suggest the following variable type added to D as a supplement to pointers. Please review the following code and suggest modifications and additions as you see. Thanks! -S. Oh yes, and please assume all the following asserts PASS. long x = 2; long& y = &x; assert(y == 2); y = 4; assert(x == 4); assert(&y == &x); //Notice the change in the operation of &. Not a handle to x! long z = 5; &y = &z; //& Allows l-value assignment, assert( y == 5 ); assert( &y == &z ); assert(y.sizeof == z.sizeof); //Sizeof gives information on referenced type, not reference. Ditto for other properties
I would moderately prefer a syntax with "ref" instead of "&", as: long x = 1; ref long z = &x; Also, "ref" (or "&") would supersede the functionality of "inout", since they do the same, only that "inout" only works for parameter variables. -- Bruno Medeiros - CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
Apr 09 2006
ref/alias/inout are possible choices. It seems impossible to write proper containers without C++ like reference typeI would moderately prefer a syntax with "ref" instead of "&", as: long x = 1; ref long z = &x; Also, "ref" (or "&") would supersede the functionality of "inout", since they do the same, only that "inout" only works for parameter variables. -- Bruno Medeiros - CS/E student http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
Apr 10 2006









Hasan Aljudy <hasan.aljudy gmail.com> 