跳轉到內容

D 入門指南/基礎知識/模組簡介

來自華夏公益教科書,開放的書籍,開放的世界


(Java 程式設計師:請閱讀本章節的最後一小節)

什麼是模組?

[編輯 | 編輯原始碼]

從技術上講,模組將邏輯上屬於一起的事物分組在一起。一個模組可以包含任意數量的函式、變數和其他 D 結構的定義,這些結構將在後面介紹。這些部分可以透過 D 中的其他模組輕鬆訪問。

每個 D 程式至少包含一個模組,該模組包含main()函式(見 上一節)。

實際上,在 D 中,模組只是一個包含 D 原始碼的檔案(通常具有“.d”檔案字尾)。

它們有什麼用?

[編輯 | 編輯原始碼]

可重用程式碼

[編輯 | 編輯原始碼]

在程式設計中,使程式碼可重用非常重要。如果沒有可重用程式碼,編寫即使是很小的程式的過程也會因重寫所有需要的基本程式碼而變得不堪重負,例如與使用者或網路的通訊以及數學函式。

與函式類似,模組是將複雜程式分解成可以單獨檢視的小部分的另一種方法。

在 D 中,要從模組 Y 訪問模組 X,必須在模組 Y 中匯入模組 X。

匯入模組是透過一個import語句來完成的,該語句包含關鍵字import和模組名稱。例如,要匯入模組“std.cstream”(將在後面討論),使用以下語句

import std.cstream;

當然,這可以推廣到匯入任何模組

import module name;

在匯入模組中定義的所有內容(例如函式、變數等)都將為匯入模組所知,並且可以在其中使用。

一個是一組模組,可能還包含(子)包。實際上它只是一個包含模組原始檔和其他目錄的目錄。在上面的例子中,“std”是一個包含模組“cstream”(以及其他模組)的包。匯入模組時,必須始終在import語句中提及包含它的包,用點彼此分隔,並與實際模組名稱分隔(與檔案路徑非常相似)。

包通常用於將處理一項或多項常用任務的模組組合在一起。這種型別的包被稱為。大多數庫專門用於執行單一任務,但有些庫則(更)通用。Phobos 執行時庫就是一個著名的例子。它是 D 語言的標準庫,所有 D 編譯器都將其作為標準庫提供std包。它處理語言本身未內建的基本功能,例如輸入和輸出、常見的數學函式等等。雖然 D 編譯器需要包含 Phobos(或一個 100% 相容的庫),但它本身並不是語言的一部分。因此,本書將不會深入介紹 Phobos,除了必要的內容以外。

編寫模組

[編輯 | 編輯原始碼]

當然可以編寫自己的模組。事實上,你編寫的任何 D 程式都將包含在一個模組中。但是,在本指南中,直到介紹了更多基礎知識後,才會介紹將程式分成多個模組的方法。

面向 Java 程式設計師的資訊

[編輯 | 編輯原始碼]
  • 模組可以包含零個或多個類定義,也可以包含其他實體,例如函式。
  • 模組名稱與包含的實體名稱之間沒有關係。
  • 模組名稱遵循識別符號的一般規則,檔名字尾為“.d”。
  • 模組可以像 Java 一樣組織到包中(使用目錄)。
華夏公益教科書