D编程 模板
2021-09-01 10:39 更新
模板是通用编程的基础,它涉及以独立于任何特定类型的方式编写代码。
函数模板
将函数定义为模板会将其使用的一种或多种类型保留为未指定状态,以便稍后由编译器推导。在模板参数列表中定义了未指定的类型,该参数介于函数名称和函数参数列表之间。因此,函数模板具有两个参数列表-
- 模板参数列表
- 函数参数列表
import std.stdio;
void print(T)(T value) {
writefln("%s", value);
}
void main() {
print(42);
print(1.2);
print("test");
}
如果我们编译并运行以上代码,这将产生以下输出-
42
1.2
test
多个参数
可以有多种参数类型。它们显示在下面的示例中。
import std.stdio;
void print(T1, T2)(T1 value1, T2 value2) {
writefln(" %s %s", value1, value2);
}
void main() {
print(42, "Test");
print(1.2, 33);
}
如果我们编译并运行以上代码,这将产生以下输出-
42 Test
1.2 33
类模板
正如我们可以定义函数模板一样,我们也可以定义类模板,下面的示例定义了Stack类,并实现了通用方法来推送和弹出堆栈中的元素。
import std.stdio;
import std.string;
class Stack(T) {
private:
T[] elements;
public:
void push(T element) {
elements ~= element;
}
void pop() {
--elements.length;
}
T top() const @property {
return elements[$- 1];
}
size_t length() const @property {
return elements.length;
}
}
void main() {
auto stack=new Stack!string;
stack.push("Test1");
stack.push("Test2");
writeln(stack.top);
writeln(stack.length);
stack.pop;
writeln(stack.top);
writeln(stack.length);
}
编译并执行上述代码后,将产生以下输出-
Test2
2
Test1
1
以上内容是否对您有帮助:
← D编程 模块
更多建议: