在线观看不卡亚洲电影_亚洲妓女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)先級(jí)
D語言continue語句
D語言異常處理
D語言break語句
D語言if...else語句
D語言類和對(duì)象
類繼承
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語言模塊

D語言的模塊是基于一個(gè)簡單的概念的構(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語言中包是一個(gè)簡單的概念,同一個(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。

長和短的模塊名稱

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

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

長名稱通常是沒有必要的,但有時(shí)也有名稱沖突。舉例來說,指的是出現(xiàn)在多于一個(gè)模塊的名稱時(shí),編譯器無法決定哪一個(gè)意思。下面的程序是拼寫出長名稱是在兩個(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