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

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

D語(yǔ)言模塊

D語(yǔ)言的模塊是基于一個(gè)簡(jiǎn)單的概念的構(gòu)建塊。每個(gè)源文件是一個(gè)模塊。因此,單一的文件,我們一直在編寫程序中已經(jīng)全部單獨(dú)的模塊。 默認(rèn)情況下,模塊的名稱與不帶.d擴(kuò)展名文件名相同。當(dāng)明確指定,該模塊的名稱是由module關(guān)鍵字,它必須顯示為文件。例如在源代碼中的第一個(gè)非注釋行定義,假設(shè)一個(gè)源文件的名稱是“employee.d”時(shí),該模塊的名稱會(huì)由module關(guān)鍵字后跟employee指定。它如下所示。

module employee;

class Employee
{
   // Class definition goes here.
}

該模塊線是可選的。如果未指定,它是相同的文件名不帶 .d 擴(kuò)展名。

文件和模塊名

D支持Unicode的源代碼和模塊名。不過,支持Unicode文件系統(tǒng)的不同而不同。例如,雖然大多數(shù)Linux文件系統(tǒng)支持Unicode,在Windows文件系統(tǒng)中的文件名可能不與小寫和大寫字母區(qū)分。此外,大多數(shù)文件系統(tǒng)限制,可以在文件和目錄名中使用的字符。對(duì)于便攜性的原因,建議在文件名中只使用小寫的ASCII字母。例如,“employee.d”將是一個(gè)命名的類eëmployëë一個(gè)合適的文件名

因此,模塊的名稱將包括ASCII字母,以及:

module employee;  // Module name consisting of ASCII letters

class eëmployëë
{
}

相關(guān)的模塊組合被稱為一個(gè)包。 D語(yǔ)言中包是一個(gè)簡(jiǎn)單的概念,同一個(gè)目錄內(nèi)的源文件被認(rèn)為屬于同一個(gè)包。該目錄的名稱變成了包,也必須指定為模塊名稱的第一個(gè)部分的名稱。

例如,如果“employee.d”和“office.d”里面的目錄中“company”,然后連同模塊名指定的目錄名,使它們成為同一個(gè)包的一部分:

module company.employee;

class Employee 
{
}

類似地,對(duì)于office模塊:

module company.office;

class Office 
{
}

由于包名對(duì)應(yīng)的目錄名,模塊,不是一個(gè)目錄層次更深的包名稱必須反映這一層次。例如,如果“company”目錄包含一個(gè)“branch”目錄,該目錄內(nèi)的模塊的名稱將包括分支

module company.branch.employee;

在程序中使用模塊

import關(guān)鍵字,我們一直在使用,幾乎每一個(gè)程序中,到目前為止,是引入一個(gè)模塊到當(dāng)前模塊:

import std.stdio;

模塊名稱可以包含包名稱。例如,上面部分表示標(biāo)準(zhǔn)輸入輸出是一個(gè)模塊,它是在std包的一部分。

模塊的位置

編譯器直接轉(zhuǎn)換包和模塊名稱的目錄和文件名查找模塊文件。

例如,兩個(gè)模塊員工和辦公室將設(shè)為“company/employee.d”和“animal/ office.d”,分別為(或“companyemployee.d”和“companyoffice.d”,這取決于文件系統(tǒng)),用于company.employee和company.office。

長(zhǎng)和短的模塊名稱

這是在程序中使用的名稱可能拼寫,如下圖所示的模塊和包名。

import company.employee;
auto employee0 = Employee();
auto employee1 = company.employee.Employee();

長(zhǎng)名稱通常是沒有必要的,但有時(shí)也有名稱沖突。舉例來說,指的是出現(xiàn)在多于一個(gè)模塊的名稱時(shí),編譯器無法決定哪一個(gè)意思。下面的程序是拼寫出長(zhǎng)名稱是在兩個(gè)單獨(dú)的模塊定義了兩個(gè)獨(dú)立Employee結(jié)構(gòu)來區(qū)分:company和college。

在文件夾company中的第一個(gè)employee模塊如下所示。

module company.employee;

import std.stdio;

class Employee
{
public:
    string str;

    void print(){
    	writeln("Company Employee: ",str);
    }
}    

在文件夾college第二個(gè)employee模塊如下所示。

module college.employee;

import std.stdio;

class Employee
{
public:
    string str;

    void print(){
    	writeln("College Employee: ",str);
    }
} 

在hello.d的主模塊應(yīng)包含了college和company的文件夾中。如下:

import company.employee;
import college.employee;

import std.stdio;

void main()
{
   auto myemployee1 = new company.employee.Employee();
   myemployee1.str = "emp1";
   myemployee1.print();

   auto myemployee2 = new college.employee.Employee();
   myemployee2.str = "emp2";
   myemployee2.print();
}

import關(guān)鍵字不足以使模塊成為程序的一部分。它只是使提供當(dāng)前模塊內(nèi)的一個(gè)模塊的功能。需要這么多只編譯代碼。

對(duì)于上面的程序,將建成“company/employee.d”和“college/employee.d”也必須在編譯行中指定。我們將得到下面的輸出編譯和執(zhí)行。

$ dmd hello.d company/employee.d college/employee.d -ofhello.amx
$ ./hello.amx
Company Employee: emp1
College Employee: emp2