Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
April 07, 2006 Proposal: Reference Variables | ||||
---|---|---|---|---|
| ||||
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 |
April 07, 2006 Re: Proposal: Reference Variables | ||||
---|---|---|---|---|
| ||||
Posted in reply to S. Chancellor | 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.
|
April 09, 2006 Re: Proposal: Reference Variables | ||||
---|---|---|---|---|
| ||||
Posted in reply to Hasan Aljudy | 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 |
April 09, 2006 Re: Proposal: Reference Variables | ||||
---|---|---|---|---|
| ||||
Posted in reply to S. Chancellor | 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 |
April 11, 2006 Re: Proposal: Reference Variables | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bruno Medeiros | 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 ..)
|
April 11, 2006 Re: Proposal: Reference Variables | ||||
---|---|---|---|---|
| ||||
Posted in reply to Bruno Medeiros | ref/alias/inout are possible choices. It seems impossible to write proper containers without C++ like reference type
>
>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
|
Copyright © 1999-2021 by the D Language Foundation