D 语言静态 Class 函数未定义标识符
D Language Static Class Function Undefined Identifier
我开始学习 D 编程语言(它非常棒),并且 运行 在我开始探索函数时遇到了一个小问题。设置非常基本;这只是找出该语言与我使用过的其他语言的相似之处的一种方法。这是我的 class 声明:
module TestClass;
import std.string;
class TestClass
{
this()
{
// Constructor code
}
public static string getData(){
return "Test";
}
};
这是我的主要内容:
module main;
import std.stdio;
import std.string;
import TestClass;
void main(string[] args)
{
writeln(TestClass.getData());
stdin.readln();
}
调用 TestClass 中的静态函数似乎有问题。我收到 "undefined identifier" 错误。这是一张图片:
有谁知道我做错了什么?我试着浏览了 digital mars 网站上的文档,但老实说这有点违反直觉。
现在手边没有 D 编译器,也有一段时间没有使用该语言,我想我记得在开始使用 D 时遇到过类似的问题。
我认为 import
语句引入了模块 TestClass
,因此当您键入 TestClass.getData()
时,编译器认为您指的是全局函数 getData
在 TestClass
模块中。
您可以通过多种方式解决此问题:
- 将
TestClass
模块重命名为其他名称。这将避免模块和 class 之间的名称冲突。正如 Jonathan M Davis 在评论中指出的那样,D 社区的惯例是对模块使用小写字符,因此您只需将其重命名为 testclass
.
显式导入 class:
import TestClass : TestClass;
写TestClass.TestClass.getData()
表示模块里面的class。
还应该指出的是,与 Java 不同,classes 不需要每个都在 D 中的单独模块中。
我开始学习 D 编程语言(它非常棒),并且 运行 在我开始探索函数时遇到了一个小问题。设置非常基本;这只是找出该语言与我使用过的其他语言的相似之处的一种方法。这是我的 class 声明:
module TestClass;
import std.string;
class TestClass
{
this()
{
// Constructor code
}
public static string getData(){
return "Test";
}
};
这是我的主要内容:
module main;
import std.stdio;
import std.string;
import TestClass;
void main(string[] args)
{
writeln(TestClass.getData());
stdin.readln();
}
调用 TestClass 中的静态函数似乎有问题。我收到 "undefined identifier" 错误。这是一张图片:
有谁知道我做错了什么?我试着浏览了 digital mars 网站上的文档,但老实说这有点违反直觉。
现在手边没有 D 编译器,也有一段时间没有使用该语言,我想我记得在开始使用 D 时遇到过类似的问题。
我认为 import
语句引入了模块 TestClass
,因此当您键入 TestClass.getData()
时,编译器认为您指的是全局函数 getData
在 TestClass
模块中。
您可以通过多种方式解决此问题:
- 将
TestClass
模块重命名为其他名称。这将避免模块和 class 之间的名称冲突。正如 Jonathan M Davis 在评论中指出的那样,D 社区的惯例是对模块使用小写字符,因此您只需将其重命名为testclass
. 显式导入 class:
import TestClass : TestClass;
写
TestClass.TestClass.getData()
表示模块里面的class。
还应该指出的是,与 Java 不同,classes 不需要每个都在 D 中的单独模块中。