June 08, 2020
On Monday, 8 June 2020 at 14:27:26 UTC, data pulverizer wrote:
> [snip]
>
> Out of curiosity what does the "." in front of `foo` mean? I've seen that in some D code on the compiler in GitHub and have no idea what it does. I tried Googling it to no avail. It doesn't have anything to do with UFCS does it?
>
> Thanks

ag0aep6g provided the link to it, but it's one of those things that has been difficult for me to understand as well. I believe the original code had `foo` in a template. So in that case it was necessary. I'm not sure if it still is in my simplified version.
June 08, 2020
On 6/8/20 11:11 AM, jmh530 wrote:
> On Monday, 8 June 2020 at 14:27:26 UTC, data pulverizer wrote:
>> [snip]
>>
>> Out of curiosity what does the "." in front of `foo` mean? I've seen that in some D code on the compiler in GitHub and have no idea what it does. I tried Googling it to no avail. It doesn't have anything to do with UFCS does it?
>>
>> Thanks
> 
> ag0aep6g provided the link to it, but it's one of those things that has been difficult for me to understand as well. I believe the original code had `foo` in a template. So in that case it was necessary. I'm not sure if it still is in my simplified version.

The dot operator simply specifies that the symbol you are looking for is defined at global scope, so it just changes the lookup rules.

Even though it makes the code clearer what foo you are looking at, it was not necessary -- removing the dot works.

In some cases it is necessary to use the . lookup rule, because you have another symbol that will be picked first.

For example:

int x;

template bar(string x)
{
   mixin("alias " ~ x ~ " = .x;");
}

-Steve
June 08, 2020
On Monday, 8 June 2020 at 16:02:02 UTC, Steven Schveighoffer wrote:
> On 6/8/20 11:11 AM, jmh530 wrote:
>> On Monday, 8 June 2020 at 14:27:26 UTC, data pulverizer wrote:
>>> [snip]
>>>
>>> Out of curiosity what does the "." in front of `foo` mean? [snip]
>> 
>> ag0aep6g provided the link to it [snip]
>
> The dot operator simply specifies that the symbol you are looking for is defined at global scope, so it just changes the lookup rules.
>
> Even though it makes the code clearer what foo you are looking at, it was not necessary -- removing the dot works.
>
> In some cases it is necessary to use the . lookup rule, because you have another symbol that will be picked first.
>
> For example:
>
> int x;
>
> template bar(string x)
> {
>    mixin("alias " ~ x ~ " = .x;");
> }
>
> -Steve

Thanks both of you. It's one of those puzzling things that was at the back of mind that has just been resolved.

1 2
Next ›   Last »