D編程 模板

2021-09-01 10:39 更新

模板是通用編程的基礎(chǔ),它涉及以獨(dú)立于任何特定類型的方式編寫代碼。

函數(shù)模板

將函數(shù)定義為模板會(huì)將其使用的一種或多種類型保留為未指定狀態(tài),以便稍后由編譯器推導(dǎo)。在模板參數(shù)列表中定義了未指定的類型,該參數(shù)介于函數(shù)名稱和函數(shù)參數(shù)列表之間。因此,函數(shù)模板具有兩個(gè)參數(shù)列表-

  • 模板參數(shù)列表
  • 函數(shù)參數(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 

多個(gè)參數(shù)

可以有多種參數(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 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)