跳至內容

BOO入門/命名空間

維基教科書,自由的教學讀本

BOO入門 > 命名空間 (上一章:結構 下一章:列舉)


定義 定義 命名空間:給予一群類別一個獨特的識別名稱,以避免與其他不同來源但同名稱的類別混淆。

舉例來說,如果你有一個 Dog 命名空間和一個 Furniture 命名空間,而它們兩者內各有一個 Leg 類別,你可以使用 Dog.Leg 和 Furniture.Leg 來清楚的表示要使用哪一個 Leg。

宣告命名空間

[編輯]

要宣告命名空間,你只需要將 namespace 放在代碼的最前面,並加上一個名字就行了。

// 宣告命名空間
namespace Tutorial

class Thing():
    pass

這樣就建立了 Tutorial.Thing。當在命名空間內使用時,很顯然就是 Thing。

要宣告一個命名空間裏頭的命名空間時,就加上 '.',例如:namespace System.Web 。

建議 建議 在檔案的最頂端宣告命名空間,並且使用 PascalCase 來命名。

引入其他命名空間

[編輯]

要使用其他命名空間的類別時,你得使用 import 關鍵字。 最常使用到的命名空間是 System ...

// 引入其他命名空間的類別
import System

Console.WriteLine()
// 不引入的話可以這麼寫
System.Console.WriteLine()

這兩個例子都一樣,但加上 import 的話,會比較簡單而清楚。

建議 建議 不要害怕使用 import,記得別引用到你用不到的命名空間就好。
建議 建議 當引入時,先引入系統命名空間,例如:System 或 Boo.Lang。然後才是第三方的命名空間。

如果你要引入在其他組件(Assembly)裏的命名空間,你可以使用這樣的語法:import <target> from <assembly>,舉例來說:

// 引入其他組件裡的命名空間

import System.Data from System.Data
import Gtk from "gtk-sharp"

System.Data 是外部函式庫 System.Data.dll 的一部分,而 Gtk 則是 Gtk# 函式庫裏的一部分,這裏加上 " 的原因,是因為有 '-',所以加上 " 以避免 Boo 發出錯誤。

建議 建議 在你程式只有一個檔案的情況下使用 import <target> from <assembly> 的語法。如果你的程式有很多檔案時,你應該使用 build 工具,像 NAnt 或 msbuild(xbuild),這會在 使用Boo編譯器 裏討論。

練習

[編輯]
  1. 想想該怎麼運用命名空間,再想想如果不使用的話,會發生什麼情況?