gpt4 book ai didi

class - 访问外部类

转载 作者:行者123 更新时间:2023-12-04 03:01:58 25 4
gpt4 key购买 nike

我目前正在阅读“The D Programming Language”一书。它讲述了内部类。

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,我需要使用 this.outer.x。但是一件令人困惑的事情是“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”,这一次,编译器会说“ undefined variable ‘blah’”。

语言中是否存在与此相关的设计错误?作为程序员,我不喜欢这种由编译器完成的名称转换。

我使用的是 Windows XP,DMD 版本是 2.060。

最佳答案

outer是关键字。就像 super管他呢。一个类总是只嵌套在一个类中,所以 outer关键字指的是那个类。

http://dlang.org/class.html#nested

在这里您可以找到outer实际上是一个属性。

关于class - 访问外部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14154340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com