Class 访问外部类
我现在正在读《D编程语言》这本书。它讲述的是内部类Class 访问外部类,class,d,Class,D,我现在正在读《D编程语言》这本书。它讲述的是内部类 class Outer{ int x; this(){ x = 99; new Inner; } class Inner{ int x; this(){ x = 5; writeln( "Inner x = ", x, "; Outer x = ", this.outer.x );
class Outer{
int x;
this(){
x = 99;
new Inner;
}
class Inner{
int x;
this(){
x = 5;
writeln( "Inner x = ", x, "; Outer x = ", this.outer.x );
}
}
}
正如书中所说,为了能够访问类Outer的x,我需要使用这个.Outer.x。但是一件令人困惑的事情是类“Outer”的名称变成了小写的“Outer”。使用普通类名“Outer”,编译器会给出错误消息。这就像编译器决定您需要使用什么作为名称,并强制使用它生成的名称一样
我的问题是,当我将类“Outer”重命名为“bLaH”时,现在我无法再将类外部化
class bLaH{
int x;
this(){
x = 99;
new Inner;
}
class Inner{
int x;
this(){
x = 5;
writeln( "Inner x = ", x, "; Outer x = ", this.bLaH.x );
}
}
}
访问外部类时使用什么名称并不明显。第一个字母现在是小写,但编译器说“test1.bLaH”没有定义。(文件名为test1.d)
如果我将“this.bLaH”转换为“this.bLaH”,因为我认为编译器可能会将外部类的名称转换为所有小写,那么这次,编译器会说“未定义的变量‘bLaH’”
语言中是否存在与此相关的设计错误?作为一名程序员,我不喜欢这种由编译器完成的名称转换
我在Windows XP上,DMD版本是2.060。
outer
是一个关键字。这就像是super
之类的。一个类始终只嵌套在一个类中,因此outer
关键字引用该类
在这里,您可以发现
外部
实际上是一个属性。谢谢。我继续阅读,在“静态嵌套类”部分,作者突然说“神奇的。外部属性”,然后我明白了。干杯