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