我开始学习D编程语言(它非常棒),当我开始探索函数时遇到了一个小问题。设置非常基本;这只是一种方法,可以找出我用过的其他语言的相似之处。这是我的班级声明:
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中调用静态函数似乎存在问题。我收到“未定义的标识符”错误。这是一张图片:
有谁知道我做错了什么?我试着查看数字火星网站上的文档,但说实话,这有点违反直觉。
答案 0 :(得分:5)
现在没有D编译器方便,并且暂时没有使用该语言,我想我记得在D开始时有类似的问题。
我认为import
语句会引入模块TestClass
,因此当您键入TestClass.getData()
时,编译器会认为您指的是全局函数getData
。 TestClass
模块。
您可以通过多种方式解决此问题:
TestClass
模块重命名为其他内容。这样可以避免模块和类之间的名称冲突。正如Jonathan M Davis在评论中指出的那样,D社区中的约定是对模块使用小写字符,因此您只需将其重命名为testclass
。明确导入该类:
import TestClass : TestClass;
写TestClass.TestClass.getData()
来引用模块内的类。
还应该指出的是,与Java不同,类不需要分别在D中的单独模块中。