Thread overview
Bug or feature?
May 26, 2013
mimi
May 27, 2013
Maxim Fomin
May 27, 2013
mimi
May 27, 2013
Namespace
May 27, 2013
mimi
May 27, 2013
Maxim Fomin
May 27, 2013
mimi
May 26, 2013
import std.stdio;

struct S
{
    int bigUglyName;

    void foo( S s )
    {
        alias bigUglyName local;
        alias s.bigUglyName b;

        writeln( "bigUglyName (AKA local)=", local, " b=", b );
    }
}

void main()
{
    S s1;
    S s2;

    s1.bigUglyName = 1;
    s2.bigUglyName = 2;

    s1.foo( s2 );
}


returns to console:
bigUglyName (AKA local)=1 b=1

Why? I am expected that b=2
May 27, 2013
On Sunday, 26 May 2013 at 23:35:43 UTC, mimi wrote:
> import std.stdio;
>
> struct S
> {
>     int bigUglyName;
>
>     void foo( S s )
>     {
>         alias bigUglyName local;
>         alias s.bigUglyName b;
>
>         writeln( "bigUglyName (AKA local)=", local, " b=", b );
>     }
> }
>
> void main()
> {
>     S s1;
>     S s2;
>
>     s1.bigUglyName = 1;
>     s2.bigUglyName = 2;
>
>     s1.foo( s2 );
> }
>
>
> returns to console:
> bigUglyName (AKA local)=1 b=1
>
> Why? I am expected that b=2

alias does not capture this pointer, it is rewritten as S.bigUglyName and you can refer to non-static fields as Type.member which is this.member in member functions  (in D semantic differences of accessing static and non-static members are diluted)
May 27, 2013
Well, how you can reduce the long ugly name in this case? In the real function I mentioned it so many times.
May 27, 2013
void foo( S s )
{
	auto local = this.bigUglyName;
	auto b = s.bigUglyName;

	writeln( "bigUglyName (AKA local)=", local, " b=", b );
}

:P
May 27, 2013
On Monday, 27 May 2013 at 10:17:01 UTC, Namespace wrote:
> void foo( S s )
> {
> 	auto local = this.bigUglyName;
> 	auto b = s.bigUglyName;
>
> 	writeln( "bigUglyName (AKA local)=", local, " b=", b );
> }
>
> :P

By the way, yes. Thanks for that, I'm stupid today.
May 27, 2013
On Monday, 27 May 2013 at 10:07:49 UTC, mimi wrote:
> Well, how you can reduce the long ugly name in this case? In the real function I mentioned it so many times.

By not making the name ugly big.
May 27, 2013
On Monday, 27 May 2013 at 11:32:46 UTC, Maxim Fomin wrote:
> On Monday, 27 May 2013 at 10:07:49 UTC, mimi wrote:
>> Well, how you can reduce the long ugly name in this case? In the real function I mentioned it so many times.
>
> By not making the name ugly big.

Other people do.

In addition, sometimes you want to cut long nested queries such as:

auto numOfPixelsDisplayed = Table.getItems( Scene.getObjectsArray() ).prepareForDisplay( type.GL ).showScene();