在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ D語言混合類型
類的訪問修飾符
D語言運(yùn)算符
D語言邏輯運(yùn)算符
類指針
D語言元組
D語言指針
D語言模塊
D語言sizeof運(yùn)算符
D語言混合類型
D語言封裝
D語言條件編譯
類的靜態(tài)成員
D語言do...while循環(huán)
D語言結(jié)構(gòu)體
重載
D語言字符串-String
D語言決策語句
D語言接口
D語言for循環(huán)
D語言switch語句
D語言關(guān)聯(lián)數(shù)組
D語言范圍
D語言枚舉Enums
契約式編程
D語言并發(fā)
D語言開發(fā)環(huán)境設(shè)置
D語言別名
D語言常值
D語言常量
D語言函數(shù)
D語言if嵌套語句
D語言循環(huán)
D語言概述,D語言是什么?
D語言運(yùn)算符優(yōu)先級
D語言continue語句
D語言異常處理
D語言break語句
D語言if...else語句
D語言類和對象
類繼承
D語言字符
D語言教程
D語言關(guān)系運(yùn)算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語言抽象類
D語言if語句
D語言賦值運(yùn)算符
D中算術(shù)運(yùn)算符
D語言類成員函數(shù)
D語言位運(yùn)算符
D語言變量
D語言數(shù)據(jù)類型
D語言文件I/O
D語言數(shù)組
一元運(yùn)算符重載
D語言嵌套switch語句
D語言基本語法
二元運(yùn)算符重載
this指針
D語言聯(lián)合體
D語言模板
D語言嵌套循環(huán)
D語言while循環(huán)

D語言混合類型

混合類型的結(jié)構(gòu),使所生成的代碼中混合類型的源代碼?;旌项愋涂梢允且韵骂愋?。

  • String 混合類型

  • Template 混合類型

  • 混合命名空間

String 混合類型

D語言有字符串在編譯時插入代碼串的能力。字符串混合類型的語法如下所示。

mixin (compile_time_generated_string)

一個簡單字符串混合類型的例子如下所示。

import std.stdio;

void main()
{
   mixin(`writeln("Hello World!");`);
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會產(chǎn)生結(jié)果如下:

Hello World!

這里是另一個例子,我們可以通過在字符串中的編譯時間,以便混合類型可以使用函數(shù)來重用代碼。它如下所示。

import std.stdio;

string print(string s)
{
   return `writeln("` ~ s ~ `");`;
}

void main()
{
   mixin (print("str1"));
   mixin (print("str2"));
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會產(chǎn)生結(jié)果如下:

str1
str2

模板混合類型

D語言模板定義通用的代碼模式,讓編譯器來生成該模式的實際情況。模板可以生成功能,結(jié)構(gòu),聯(lián)合,類,接口,以及任何其他合法D代碼。模板混合類型的語法如下所示。

mixin a_template!(template_parameters)

一個簡單的例子字符串混合類型如下所示,我們創(chuàng)建一個類系和一個混合類型實例化一個模板一個模板,從而使得該功能的setName和printNames可用的結(jié)構(gòu)college。

import std.stdio;

template Department(T, size_t count)
{
   T[count] names;

   void setName(size_t index, T name)
   {
      names[index] = name;
   }

   void printNames()
   {
      writeln("The names");

      foreach (i, name; names) 
      {
         writeln(i," : ", name);
      }
   }
}

struct College
{
   mixin Department!(string, 2);
}

void main()
{
   auto college = College();

   college.setName(0, "name1");
   college.setName(1, "name2");

   college.printNames();
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會產(chǎn)生結(jié)果如下:

The names
0 : name1
1 : name2

混入名稱空間

混入的名稱空間是用來避免在模板中混合類型含糊不清。例如,可以有兩個變量,一個在主顯式定義,而另一個是混合的。當(dāng)混合在名稱相同的名稱是在周邊范圍內(nèi),則認(rèn)為是在周圍范圍的名稱得到使用。這個例子顯示如下。

import std.stdio;

template Person()
{
   string name;
   void print()
   {
      writeln(name);
   }
}

void main()
{
   string name;

   mixin Person a;

   name = "name 1";
   writeln(name);

   a.name = "name 2";
   print();
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會產(chǎn)生結(jié)果如下:

name 1
name 2