W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
模板是通用編程的基礎(chǔ),它涉及以獨(dú)立于任何特定類型的方式編寫代碼。
將函數(shù)定義為模板會(huì)將其使用的一種或多種類型保留為未指定狀態(tài),以便稍后由編譯器推導(dǎo)。在模板參數(shù)列表中定義了未指定的類型,該參數(shù)介于函數(shù)名稱和函數(shù)參數(shù)列表之間。因此,函數(shù)模板具有兩個(gè)參數(shù)列表-
import std.stdio;
void print(T)(T value) {
writefln("%s", value);
}
void main() {
print(42);
print(1.2);
print("test");
}
如果我們編譯并運(yùn)行以上代碼,這將產(chǎn)生以下輸出-
42
1.2
test
可以有多種參數(shù)類型。它們顯示在下面的示例中。
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);
}
如果我們編譯并運(yùn)行以上代碼,這將產(chǎn)生以下輸出-
42 Test
1.2 33
正如我們可以定義函數(shù)模板一樣,我們也可以定義類模板,下面的示例定義了Stack類,并實(shí)現(xiàn)了通用方法來(lái)推送和彈出堆棧中的元素。
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);
}
編譯并執(zhí)行上述代碼后,將產(chǎn)生以下輸出-
Test2
2
Test1
1
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: