Using the same name for diffrent entities

Mike Parker via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon May 1 08:16:05 PDT 2017


On Monday, 1 May 2017 at 14:01:19 UTC, Noy wrote:
> Hello,
> Is it possible to use the same name for different entities? For 
> example calling a variable and a class\function by the same 
> name.

Symbols declared in the same scope must be unique. For example:

```
module foo;

int bar;
void bar();
class bar {}
```

This will not compile as the three symbols conflict. But:

```
module foo1;
int bar;

module foo2;
void bar();

module foo3;
import foo1, foo2;

class bar {}
```
This is fine. You can disambiguate using fully qualified names: 
`bar` will refer to the class, foo1.bar to the variable, and 
foo2.bar to the function.

You can shadow symbols in inner scopes:

```
class bar {}

void main() {
     void bar() {}
     void foo() { int bar; }
}
```
That would be really confusing, though.



More information about the Digitalmars-d-learn mailing list